import { Inject, Provide } from '@midwayjs/decorator';
import { BaseService, ICoolCache, } from '@cool-midway/core';
import * as _ from 'lodash';
import { MysqlUtil } from '../../utils/mysqlutil';
import { DateUtil } from '../../utils/dateutil';
import { AxiosUtil } from '../../utils/axiosutil';

// 引入读写核心模块


/**
 * 系统用户
 */
@Provide()
export class RpcService extends BaseService {

    @Inject('cool:cache')
    coolCache: ICoolCache;

    @Inject()
    mysqlUtil: MysqlUtil;

    rpc_url: "http://192.168.1.4:5000/api";

    @Inject()
    dateUtil: DateUtil;

    @Inject()
    axios: AxiosUtil;

    /**
   * 远程调用设备，启动任务执行
   * @param query
   */
    async remoteCall(url, query) {
        if (url == null) {
            url = this.rpc_url;
        }
        let stattime = this.dateUtil.getCurretTimeStr()
        console.log('---------------------------------------------send msg  to device-----------------------------------------')
        console.log(query)
        // let res = await this.axios.httpPostBuffer(url, query)
        console.log('---------------------------------------receive the reply msg from device-----------------------------------')
        this.axios.httpPostBuffer(url, query).then(res => {
            console.log(res)
            const bidsql = `insert into t_config_interface_record (interface_direct,start_time,end_time,request_type,createTime,remark,status,params,result) 
                values ('${url}','${stattime}','${this.dateUtil.getCurretTimeStr()}','post',now(),'ok',200,'${JSON.stringify(query)}','${res}') `;
            this.nativeQuery(bidsql);
            return res
        }).catch((error) => {
            console.log(error)
            return error
        })

    }


    /**
     * 分页查询
     * @param query
     */
    async getData(query) {
        // const { keyWord, status, departmentIds = [] } = query;
        // const permsDepartmentArr = await this.baseSysPermsService.departmentIds(
        //   this.ctx.admin.userId
        // ); // 部门权限
        const bidsql = `select * from t_sys_business_config where id_='${query.bid}' limit 0,1`;
        const bid_obj_ = await this.nativeQuery(bidsql);
        console.log(bid_obj_)
        let sqlObj = this.mysqlUtil.create_sql(bid_obj_[0], query?.pageindex || null, query?.pagesize || null, query);
        if (sqlObj?.status == 0) {
            return sqlObj?.msg;
        }
        return this.nativeQuery(sqlObj?.sql, query);
    }


    /**
     * 分页查询
     * @param query
     */
    async getDataByNative(query) {
        // const { keyWord, status, departmentIds = [] } = query;
        // const permsDepartmentArr = await this.baseSysPermsService.departmentIds(
        //   this.ctx.admin.userId
        // ); // 部门权限
        const bidsql = `select * from t_sys_business_config where id_='${query.bid}' limit 0,1`;
        const bid_obj_ = await this.nativeQuery(bidsql);
        console.log(bid_obj_)
        let sqlObj = this.mysqlUtil.create_sql(bid_obj_[0], query?.pageindex || null, query?.pagesize || null, query);
        if (sqlObj?.status == 0) {
            return sqlObj?.msg;
        }
        return this.nativeQuery(sqlObj?.sql)
    }

    /**
     * 分页查询
     * @param query
     */
    async updateData(query) {
        // const { keyWord, status, departmentIds = [] } = query;
        // const permsDepartmentArr = await this.baseSysPermsService.departmentIds(
        //   this.ctx.admin.userId
        // ); // 部门权限
        const bidsql = `select * from t_sys_business_config where id_='${query.bid}' limit 0,1`;
        const bid_obj_ = await this.nativeQuery(bidsql);
        let sqlObj = this.mysqlUtil.create_sql(bid_obj_[0], query?.pageindex || null, query?.pagesize || null, query);
        if (sqlObj?.status == 0) {
            return sqlObj?.msg;
        }
        return this.sqlRenderPage(sqlObj?.sql, query);
    }

}
