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); result['counter'] = await mysql.query_data(result.sql_count, 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); result['counter'] = await mysql.query_data(result.sql_count, 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); }); } }