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, forEachOf } = 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) {
|
if('getPointData' == params.bid || 'getPointData_auto'== params.bid) {
|
return this.getPointData(params);
|
}
|
if('getCurrPointFreqs' == params.bid || 'getCurrPointFreqs_auto'==params.bid) {
|
return this.getCurrPointFreqs(params);
|
}
|
if('getAssessValue' == params.bid || 'getFreqParams' == params.bid || 'getFreqParams_auto'==params.bid) {
|
return this.getAssessValue(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['data'] = 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['data'] = parseResults(rs_ass_map,resultMap);
|
} else {
|
result['data'] = 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 = dbhandle.create_sql(obj_[0]);
|
let result = stringutil.replaceParams(sqls,params);
|
if(result.status == 1) {
|
result['data'] = await mysql.query_data(result.sql, obj_[0].musterdb);
|
}
|
if(obj_[0].parent_id) {
|
return this.getParentData(params,obj_[0].parent_id);
|
}
|
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['data'] = 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['data'] = 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 sync_sql = [];
|
let sync_sql_values = [];
|
sync_sql.push(sqls[1]);
|
sync_sql_values.push(' values ')
|
let index_ = 0;
|
for (var key in row_) {
|
sync_sql.push(index_>0 ? ','+key : ' ('+key)
|
let value_ = typeof(row_[key]) == '[object]' ? null : (typeof(row_[key]) === '[object string]' || typeof(row_[key]) === 'string' ? "'"+row_[key]+"'" : row_[key]);
|
if(typeof(value_) === 'string' && value_.match(/\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d.\d\d\dZ/g) != null) {
|
value_ = value_.replace("T"," ").replace(".000Z","");
|
}
|
sync_sql_values.push(index_>0 ? ','+value_: ' ('+value_)
|
index_++;
|
}
|
if(index_ == 0) {
|
continue;
|
}
|
sync_sql.push(')')
|
sync_sql_values.push(')')
|
sync_sql.push(sync_sql_values.join(''))
|
result['updateres'] = await mysql.query_data(sync_sql.join(''), 'master');
|
}
|
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['data'] = 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 getCurrentFreqs(params) {
|
params['bid'] = 'getCurrNetFreqs';
|
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 freqs_set ;
|
if(result.status == 1) {
|
result_obj = await mysql.query_data(result.sql, obj_[0].musterdb);
|
// freqs_set = await this.getParentData(params,'getFreqs_set');
|
}
|
// let freqs_set_map = {};
|
// for (let index = 0; index < freqs_set.data[0].length; index++) {
|
// let element = freqs_set.data[0][index];
|
// freqs_set_map[element.frequency] = element;
|
// }
|
// for (let index = 0; index < result_obj[0].length; index++) {
|
// let element = result_obj[0][index];
|
// let freq = element.frequencyValue;
|
// if (!freqs_set_map[freq]) {
|
// continue;
|
// }
|
// result_obj[0][index].isFavoriteFreq = freqs_set_map[freq].isFavoriteFreq;
|
// result_obj[0][index].isWhiteFreq = freqs_set_map[freq].isWhiteFreq;
|
// result_obj[0][index].runtime = freqs_set_map[freq].runtime;
|
// }
|
|
result['data'] = result_obj;
|
delete result.sql_count;
|
delete result.sql;
|
return result;
|
},
|
async getPointData(params) {
|
params['bid'] = 'getPointData';
|
// http://wiibox.xicp.io:8484/dataservice/getNoTokenData?bid=getPointData&frequency=1557&wdate=2021-9-23&whour=23&userid=admin
|
let result = { "status": 1, 'sql_count': '', 'sql': '', 'msg': '' };
|
let result_obj ;
|
let pressvalue_set ;
|
if(result.status == 1) {
|
//call proc_get_point_data('1557','2021-9-22','10')
|
result_obj = await mysql.query_data("call proc_get_point_data('"+params.frequency+"','"+params.wdate+"','"+params.whour+"')", 'remote');
|
//call proc_get_assess_value('admin','2021-9-22','10','1557')
|
pressvalue_set = await mysql.query_data("call proc_get_assess_value('"+params.userid+"','"+params.wdate+"','"+params.whour+"','"+params.frequency+"')", 'master');
|
}
|
let pressvalue_map = {};
|
for (let index = 0; index < pressvalue_set[0].length; index++) {
|
let element = pressvalue_set[0][index];
|
pressvalue_map[element.monitorpointId] = element;
|
}
|
for (let index = 0; index < result_obj[0].length; index++) {
|
let element = result_obj[0][index];
|
let monitorpointId_ = element.monitorpointId;
|
result_obj[0][index].assessvalue = pressvalue_map[monitorpointId_] ? pressvalue_map[monitorpointId_].assessvalue : null;
|
result_obj[0][index].create_time = pressvalue_map[monitorpointId_] ? pressvalue_map[monitorpointId_].create_time : null;
|
result_obj[0][index].id = pressvalue_map[monitorpointId_] ? pressvalue_map[monitorpointId_].id : null;
|
result_obj[0][index].taskid = pressvalue_map[monitorpointId_] ? pressvalue_map[monitorpointId_].id : null;
|
result_obj[0][index].t_press_assess_schedule_id = pressvalue_map[monitorpointId_] ? pressvalue_map[monitorpointId_].t_press_assess_schedule_id : null;
|
result_obj[0][index].taskcode = pressvalue_map[monitorpointId_] ? pressvalue_map[monitorpointId_].taskcode : null;
|
result_obj[0][index].update_time = pressvalue_map[monitorpointId_] ? pressvalue_map[monitorpointId_].update_time : null;
|
result_obj[0][index].userid = pressvalue_map[monitorpointId_] ? pressvalue_map[monitorpointId_].userid : null;
|
result_obj[0][index].username = pressvalue_map[monitorpointId_] ? pressvalue_map[monitorpointId_].username : null;
|
result_obj[0][index].wdate = pressvalue_map[monitorpointId_] ? pressvalue_map[monitorpointId_].wdate : null;
|
result_obj[0][index].whour = pressvalue_map[monitorpointId_] ? pressvalue_map[monitorpointId_].whour : null;
|
result_obj[0][index].record_file_url = pressvalue_map[monitorpointId_] ? pressvalue_map[monitorpointId_].record_file_url : null;
|
}
|
|
result['data'] = result_obj;
|
delete result.sql_count;
|
delete result.sql;
|
return result;
|
},
|
async getCurrPointFreqs(params) {
|
params['bid'] = 'getCurrPointFreqs';
|
params['freqs'] = '';
|
// 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 = { "status": 1, 'sql_count': '', 'sql': '', 'msg': '' };
|
let result_obj ;
|
let pressvalue_set ;
|
if(result.status == 1) {
|
result_obj = await mysql.query_data('call proc_get_current_spectrum('+params.monitorpointId+')', 'remote');
|
//call proc_get_point_FreqsAssess('#{monitorpointId}','#{freqs}')
|
pressvalue_set = await mysql.query_data('call proc_get_point_FreqsAssess('+params.monitorpointId+',"")', 'master');
|
// pressvalue_set = await this.getParentData(params,'getPointFreqsAssess');
|
}
|
let pressvalue_map = {};
|
for (let index = 0; index < pressvalue_set[0].length; index++) {
|
let element = pressvalue_set[0][index];
|
pressvalue_map[element.frequency] = element;
|
}
|
for (let index = 0; index < result_obj[0].length; index++) {
|
let element = result_obj[0][index];
|
let frequency = element.frequencyValue;
|
result_obj[0][index].assessvalue = pressvalue_map[frequency] ? pressvalue_map[frequency].assessvalue : null;
|
result_obj[0][index].create_time = pressvalue_map[frequency] ? pressvalue_map[frequency].create_time : null ;
|
result_obj[0][index].id = pressvalue_map[frequency] ? pressvalue_map[frequency].id : null;
|
result_obj[0][index].taskid = pressvalue_map[frequency] ? pressvalue_map[frequency].id : null;
|
result_obj[0][index].t_press_assess_schedule_id = pressvalue_map[frequency] ? pressvalue_map[frequency].t_press_assess_schedule_id : null;
|
result_obj[0][index].taskcode = pressvalue_map[frequency] ? pressvalue_map[frequency].taskcode : null;
|
result_obj[0][index].update_time = pressvalue_map[frequency] ? pressvalue_map[frequency].update_time : null;
|
result_obj[0][index].userid = pressvalue_map[frequency] ? pressvalue_map[frequency].userid : null;
|
result_obj[0][index].username = pressvalue_map[frequency] ? pressvalue_map[frequency].username : null;
|
result_obj[0][index].wdate = pressvalue_map[frequency] ? pressvalue_map[frequency].wdate : null;
|
result_obj[0][index].whour = pressvalue_map[frequency] ? pressvalue_map[frequency].whour : null;
|
result_obj[0][index].record_file_url = pressvalue_map[frequency] ? pressvalue_map[frequency].record_file_url : null;
|
}
|
result['data'] = result_obj;
|
delete result.sql_count;
|
delete result.sql;
|
return result;
|
},
|
async getAssessValue(params) {//大屏右上
|
params['bid'] = 'getAssessValue';
|
params['freqs'] = '';
|
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 pressvalue_set ;
|
if(result.status == 1) {
|
result_obj = await mysql.query_data(result.sql, obj_[0].musterdb);
|
pressvalue_set = await this.getParentData(params,'getAssessValue_auto');
|
}
|
let pressvalue_map = {};
|
for (let index = 0; index < pressvalue_set.data[0].length; index++) {
|
let element = pressvalue_set.data[0][index];
|
pressvalue_map[element.monitorpointId] = element;
|
}
|
for (let index = 0; index < result_obj[0].length; index++) {
|
let element = result_obj[0][index];
|
let monitorpointId_ = element.monitorpointId;
|
result_obj[0][index].autopressvalue = pressvalue_map[monitorpointId_] ? pressvalue_map[monitorpointId_].paramvalue : null;
|
}
|
|
result['data'] = result_obj;
|
delete result.sql_count;
|
delete result.sql;
|
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['data'] = 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['data'] = parseResults(rs_ass_map,resultMap);
|
} else {
|
result['data'] = 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);
|
});
|
|
}
|
|
}
|