Exemple #1
0
        // 批量下发命令
        public APIRst YdBatchControlOfSsr(string v0Fun, string dataValue, string pStr)
        {
            APIRst rst = new APIRst();
            YdToGw gw  = new YdToGw(user.Ledger, user.Uid);
            V0Fun  fun = V0Fun.E;

            if (Enum.TryParse <V0Fun>(v0Fun, out fun) == false)
            {
                rst.rst      = false;
                rst.err.code = (int)ResultCodeDefine.Error;
                rst.err.msg  = "控制命令错误";
                return(rst);
            }
            //V0Fun fun = V0Fun.Ssr;
            try
            {
                foreach (string s in pStr.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
                {
                    gw.YdToGwCmd(CommFunc.ConvertDBNullToInt32(s), fun, dataValue);
                }
                rst.data = "";
            }
            catch (Exception ex)
            {
                rst.rst      = false;
                rst.err.code = (int)ResultCodeDefine.Error;
                rst.err.msg  = ex.Message;
                FileLog.WriteLog("批量下发命令错误(YdBatchControlOfSsr)", ex.Message + ex.StackTrace);
            }
            return(rst);
        }
Exemple #2
0
        // 批量下发命令
        private bool YdBatchControlOfSsr(string v0Fun, string dataValue, string pStr)
        {
            string msg = "";
            YdToGw gw  = new YdToGw(user.Ledger, user.Uid);
            V0Fun  fun = V0Fun.E;

            if (Enum.TryParse <V0Fun>(v0Fun, out fun) == false)
            {
                return(false);
            }
            //V0Fun fun = V0Fun.Ssr;
            try
            {
                foreach (string s in pStr.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
                {
                    gw.YdToGwCmd(CommFunc.ConvertDBNullToInt32(s), fun, dataValue);
                }
                return(true);
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                FileLog.WriteLog("获取状态列表错误 (GetYdBatchControlOfList)", ex.Message + ex.StackTrace);
            }
            return(false);
        }
Exemple #3
0
        public APIRst GetYdAlarmOfCmd_Ctrl(int log_id)
        {
            APIRst rst = new APIRst();
            string msg = "";

            if (log_id == 0)
            {
                rst.rst      = false;
                rst.err.code = (int)ResultCodeDefine.Error;
                rst.err.msg  = "远程控制ID为空";
                return(rst);
            }
            YdToGw gw = new YdToGw(user.Ledger, user.Uid);

            try
            {
                bool upDb = false;
                rst.rst     = gw.YdToGwAgain(log_id, out upDb, out msg);
                rst.data    = upDb;
                rst.err.msg = msg;
            }
            catch (Exception ex)
            {
                rst.rst      = false;
                rst.err.code = (int)ResultCodeDefine.Error;
                rst.err.msg  = ex.Message;
                FileLog.WriteLog("重发命令错误 (GetYdAlarmOfCmd_Ctrl)", ex.Message + ex.StackTrace);
            }
            return(rst);
        }
Exemple #4
0
        /// <summary>
        /// 下发继电器状态
        /// </summary>
        /// <returns></returns>
        public APIRst YdMonitorOfIsRelay(string v0Fun, string dataValue, int module_id)
        {
            APIRst rst = new APIRst();
            YdToGw gw  = new YdToGw(user.Ledger, user.Uid);
            V0Fun  fun = V0Fun.E;

            if (Enum.TryParse <V0Fun>(v0Fun, out fun) == false)
            {
                rst.rst      = false;
                rst.err.code = (int)ResultCodeDefine.Error;
                rst.err.msg  = "控制命令错误";
                return(rst);
            }
            try
            {
                //根据Module_id找到对应的表v0_fun中继电器状态,保存设置的继电器状态
                DataTable dt  = bll.GetMm_idBymodule_id(module_id);
                int       cnt = 0;
                if (dt.Rows.Count != 0)
                {
                    int mm_id  = CommFunc.ConvertDBNullToInt32(dt.Rows[0]["Mm_id"]);
                    int fun_id = CommFunc.ConvertDBNullToInt32(dt.Rows[0]["Fun_id"]);
                    cnt = bll.SaveIsRelayInfo(module_id, fun_id, dataValue);
                }
                else
                {
                    rst.rst      = false;
                    rst.err.code = (int)ResultCodeDefine.Error;
                    rst.err.msg  = "该功能不存在与这个类型的电表中。";
                    return(rst);
                }
                if (cnt == 0)
                {
                    rst.rst      = false;
                    rst.err.code = (int)ResultCodeDefine.Error;
                    rst.err.msg  = "更新继电器状态错误";
                    return(rst);
                }
                //向网关下发指令
                gw.YdToGwCmd(module_id, fun, dataValue);
                rst.data = "";
            }
            catch (Exception ex)
            {
                rst.rst      = false;
                rst.err.code = (int)ResultCodeDefine.Error;
                rst.err.msg  = ex.Message;
                FileLog.WriteLog("获取下发继电器状态错误 (YdMonitorOfIsRelay)", ex.Message + ex.StackTrace);
            }
            return(rst);
        }
Exemple #5
0
        /// <summary>
        /// 保存映射
        /// </summary>
        /// <param name="Module_id"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        public APIRst YdModuleOnMapInSave(int Module_id, DataModels data)
        {
            APIRst        rst     = new APIRst();
            StringBuilder tagName = new StringBuilder();

            try
            {
                int       cnt      = 0;
                YdToGw    gw       = new YdToGw(user.Ledger, user.Uid);
                DataTable dtSource = JsonHelper.ToDataTable(data.Data);
                foreach (DataRow dr in dtSource.Rows)
                {
                    int action = CommFunc.ConvertDBNullToInt32(dr["Action"]);
                    cnt = bll.YdModuleOnMapInSave(Module_id, dr);
                    if (action == 0)
                    {
                        if (!string.IsNullOrEmpty(tagName.ToString()))
                        {
                            tagName.Append(",");
                        }
                        tagName.Append(CommFunc.ConvertDBNullToString(dr["TagName"]));
                    }
                    else
                    {
                        if (cnt == 1)
                        {
                            V0Fun fun = V0Fun.E;
                            if (Enum.TryParse <V0Fun>(CommFunc.ConvertDBNullToString(dr["FunType"]), out fun) == true)
                            {
                                gw.BeginYdToGwCmd(Module_id, CommFunc.ConvertDBNullToInt32(dr["Fun_id"]), fun, CommFunc.ConvertDBNullToString(dr["DataValue"]));
                            }
                        }
                    }
                }
                if (!string.IsNullOrEmpty(tagName.ToString()))
                {
                    gw.BeginYdToGwConfig(tagName.ToString());
                }

                rst.data = cnt;
            }
            catch (Exception ex)
            {
                rst.rst      = false;
                rst.err.code = (int)ResultCodeDefine.Error;
                rst.err.msg  = ex.Message;
                FileLog.WriteLog("映射保存错误(YdModuleOnMapInSave):" + ex.Message + ex.StackTrace);
            }
            return(rst);
        }
Exemple #6
0
        /// <summary>
        /// 下发控制
        /// </summary>
        /// <param name="pStr">module_id</param>
        /// <param name="fun_id"></param>
        /// <returns></returns>
        public APIRst SendCtrl(string pStr, int fun_id)
        {
            APIRst rst = new APIRst();
            YdToGw gw  = new YdToGw(user.Ledger, user.Uid);

            try
            {
                foreach (string s in pStr.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
                {
                    gw.YdToGwCmd(CommFunc.ConvertDBNullToInt32(s), fun_id);
                }
                rst.data = "";
            }
            catch (Exception ex)
            {
                rst.rst      = false;
                rst.err.code = (int)ResultCodeDefine.Error;
                rst.err.msg  = ex.Message;
                FileLog.WriteLog("批量下发命令错误(SendCtrl)", ex.Message + ex.StackTrace);
            }
            return(rst);
        }
Exemple #7
0
        // 回调
        public APIRst YdPrepPayInMdRecallPay(int pId, int pMid, string pTrade_no)
        {
            long     log_id       = CommFunc.ConvertDBNullToLong(pId);
            int      module_id    = CommFunc.ConvertDBNullToInt32(pMid);
            string   out_trade_no = CommFunc.ConvertDBNullToString(pTrade_no);
            APIRst   rst          = new APIRst();
            string   msg          = "";
            string   status       = "";
            bool     result       = false;
            bool     pass         = true;
            bool     upSb         = true;
            bool     upDb         = false;
            DateTime dtNow        = DateTime.Now;
            long     cmd_log_id   = 0;

            #region 检查支付结果并更新数据库
            System.Threading.Thread.Sleep(1000);/*一秒检查一次*/
            object row   = "";
            object osObj = new { upSb = false, upDb = false, msg = "" };
            try
            {
                if (string.IsNullOrEmpty(out_trade_no))
                {
                    result = bll.YdPrePayInMdOnRecallPay(log_id, 1, "", out msg, out cmd_log_id);
                }
                else
                {
                    lock (ObjLock)
                    {/*每次只能单独运行,目的是防止重复更新数据库的充值信息(重要事情)*/
                        pass = new WxPayAPI.WxPay().GetResult(out_trade_no, out status);
                        if (pass == true)
                        {
                            result = bll.YdPrePayInMdOnRecallPay(log_id, 1, "", out msg, out cmd_log_id);
                        }
                    }
                }
                //
                if (result == true)
                {
                    string msg2 = "";
                    if (cmd_log_id != 0) //立刻发送命令到网关
                    {                    /*充值命令*/
                        upSb = false;
                        upSb = new YdToGw(user.Ledger, user.Uid).YdToGwAgain(cmd_log_id, out upDb, out msg2);
                    }
                    else
                    {
                        upDb = true;/*是否下发命令网关*/
                    }
                    //#region 发送命令到网关(这款用于河北工业大学的SB设备,特殊定制化)
                    //DataTable cmdPay = bll.GetGwPayData(module_id);
                    //foreach (DataRow dr in cmdPay.Rows)
                    //{
                    //    decimal sbRdVal = CommFunc.ConvertDBNullToDecimal(dr["RdVal"]);
                    //    decimal sbSyZsVal = CommFunc.ConvertDBNullToDecimal(dr["SyZsVal"]);

                    //    CommandVModel cmd = ModelHandler<CommandVModel>.FillModel(dr);
                    //    cmd.Fun_id = 0;
                    //    cmd.FunType = "PaySb1";
                    //    cmd.FunName = "充电";
                    //    cmd.DataValue = (sbRdVal - sbSyZsVal).ToString("f2");
                    //    cmd.Descr = "充电";
                    //    cmd.IsUI = true;
                    //    cmd.IsNDb = true;
                    //    new YdToGw(user.Ledger, user.Uid).SendCmd(cmd);
                    //    //
                    //    cmd = ModelHandler<CommandVModel>.FillModel(dr);
                    //    cmd.Fun_id = 0;
                    //    cmd.FunType = "PaySb2";
                    //    cmd.FunName = "增电";
                    //    cmd.DataValue = sbSyZsVal.ToString("f2");
                    //    cmd.Descr = "增电";
                    //    cmd.IsUI = true;
                    //    cmd.IsNDb = true;
                    //    new YdToGw(user.Ledger, user.Uid).SendCmd(cmd);
                    //}
                    //#endregion


                    //#region 发送短信
                    //bll.SendSms(log_id);
                    //#endregion
                    v4_pay_logVModel vpay = bll.GetV4_pay_log(log_id);

                    osObj = new { upSb = upSb, upDb = upDb, msg = msg2 };
                    decimal   chrgVal = 0, useVal = 0, rdVal = 0, syZsVal = 0;
                    DataTable dtSource = bll.GetYdPostPayInMdOnList(module_id);
                    if (dtSource.Rows.Count > 0)
                    {
                        chrgVal = CommFunc.ConvertDBNullToDecimal(dtSource.Rows[0]["ChrgVal"]);
                        useVal  = CommFunc.ConvertDBNullToDecimal(dtSource.Rows[0]["UseVal"]);
                        rdVal   = CommFunc.ConvertDBNullToDecimal(dtSource.Rows[0]["RdVal"]);
                        syZsVal = CommFunc.ConvertDBNullToDecimal(dtSource.Rows[0]["SyZsVal"]);
                    }
                    row = new { ChrgVal = chrgVal.ToString("f2"), UseVal = useVal.ToString("f2"), RdVal = rdVal.ToString("f2"), SyVal = (rdVal - syZsVal).ToString("f2"), SyZsVal = syZsVal.ToString("f2") };

                    //判断是否拉闸
                    YDS6000.BLL.Exp.Syscont.ParameterBLL sysBll = new YDS6000.BLL.Exp.Syscont.ParameterBLL(user.Ledger, user.Uid);
                    var dt = sysBll.GetAlarmCfg();
                    if (dt != null && dt.Rows.Count > 0)
                    {
                        decimal odValue  = CommFunc.ConvertDBNullToDecimal(dt.Rows[0]["CfValue"]);
                        int     isClosed = CommFunc.ConvertDBNullToInt32(dt.Rows[0]["Rule"]);
                        if (isClosed == 1)
                        {
                            if (rdVal <= odValue)
                            {
                                if (!YdBatchControlOfSsr("Ssr", "1", module_id.ToString()))
                                {
                                    FileLog.WriteLog("拉闸失败(YdPrepPayInMdRecallPay)", "拉闸失败");
                                }
                            }
                            else
                            {
                                if (vpay.PayType == (int)PayType.pay)
                                {/*充值动作才能合闸*/
                                    if (!YdBatchControlOfSsr("Ssr", "0", module_id.ToString()))
                                    {
                                        FileLog.WriteLog("合闸失败(YdPrepPayInMdRecallPay)", "合闸失败");
                                    }
                                }
                            }
                        }
                    }
                }
                object obj = new { pass = pass, row = row, osObj = osObj };
                rst.rst     = result;
                rst.data    = obj;
                rst.err.msg = msg;
            }
            catch (Exception ex)
            {
                rst.rst      = false;
                rst.err.code = (int)ResultCodeDefine.Error;
                rst.err.msg  = ex.Message;
                FileLog.WriteLog("预付费错误(YdPrepPayInMdRecallPay)", ex.Message + ex.StackTrace);
            }
            #endregion
            return(rst);
        }