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); }); } }