/// <summary>
        /// 修改
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public Message UPD(IoT_MeterTopUp info)
        {
            // 定义执行结果
            Message m;
            string  configName = System.Configuration.ConfigurationManager.AppSettings["defaultDatabase"];
            //Linq to SQL 上下文对象
            DataContext dd          = new DataContext(System.Configuration.ConfigurationManager.ConnectionStrings[configName].ConnectionString);
            string      strMessagge = string.Empty;

            try
            {
                //添加设置上传周期参数任务到通讯队列
                //Table<IoT_MeterTopUp> tbl = dd.GetTable<IoT_MeterTopUp>();
                //// 调用新增方法
                //IoT_MeterTopUp IoT_MeterTopUpDB = tbl.Where(u => u.ID == info.ID).SingleOrDefault();
                //IoT_MeterTopUpDB.State = '2';
                //IoT_MeterTopUpDB.Oper = info.Oper;
                //IoT_MeterTopUpDB.Context = info.Context;
                //// 更新操作
                //dd.SubmitChanges();
                //调用接口
                WCFServiceProxy <IMeterTopUp> proxy1 = null;
                TopUpType TopUpTypea = (TopUpType)info.TopUpType;
                proxy1      = new WCFServiceProxy <IMeterTopUp>();
                strMessagge = proxy1.getChannel.UnTopUp(info.TaskID, info.Context, info.Oper);
                if (strMessagge != "")
                {
                    m = new Message()
                    {
                        Result     = false,
                        TxtMessage = strMessagge
                    };
                }
                else
                {
                    m = new Message()
                    {
                        Result     = true,
                        TxtMessage = "撤销成功!"
                    };
                }
            }
            catch (Exception e)
            {
                m = new Message()
                {
                    Result     = false,
                    TxtMessage = "撤销充值失败!" + e.Message
                };
            }
            return(m);
        }
        /// <summary>
        /// 新增
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public Message Add(IoT_MeterTopUp info)
        {
            // 定义执行结果
            Message m;
            string  configName = System.Configuration.ConfigurationManager.AppSettings["defaultDatabase"];
            //Linq to SQL 上下文对象
            DataContext dd          = new DataContext(System.Configuration.ConfigurationManager.ConnectionStrings[configName].ConnectionString);
            string      strMessagge = string.Empty;

            try
            {
                //添加设置上传周期参数任务到通讯队列
                //Table<IoT_MeterTopUp> tbl = dd.GetTable<IoT_MeterTopUp>();

                //// 调用新增方法
                //tbl.InsertOnSubmit(info);
                //// 更新操作
                //dd.SubmitChanges();
                //调用接口
                WCFServiceProxy <IMeterTopUp> proxy1 = null;
                int       intTopUpType = int.Parse(info.TopUpType.ToString());
                TopUpType TopUpTypea   = (TopUpType)intTopUpType;
                proxy1      = new WCFServiceProxy <IMeterTopUp>();
                strMessagge = proxy1.getChannel.Topup(info.MeterNo, decimal.Parse(info.Amount.ToString()), TopUpTypea, info.Oper, info.OrgCode, info);
                m           = JsonConvert.DeserializeObject <Message>(strMessagge);
                //if (!msg.Result)
                //{
                //    m = new Message()
                //    {
                //        Result = false,
                //        TxtMessage = strMessagge
                //    };
                //}
                //else
                //{
                //    m = new Message()
                //    {
                //        Result = true,
                //        TxtMessage = "充值成功!"
                //    };
                //}
            }
            catch (Exception e)
            {
                m = new Message()
                {
                    Result     = false,
                    TxtMessage = "充值失败!" + e.Message
                };
            }
            return(m);
        }
Example #3
0
        private IoT_MeterTopUp QueryTopUp(string taskID)
        {
            string configName = System.Configuration.ConfigurationManager.AppSettings["defaultDatabase"];
            //Linq to SQL 上下文对象
            DataContext dd = new DataContext(System.Configuration.ConfigurationManager.ConnectionStrings[configName].ConnectionString);

            try
            {
                IoT_MeterTopUp topUp = dd.GetTable <IoT_MeterTopUp>().Where(p => p.TaskID == taskID).SingleOrDefault();
                return(topUp);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return(null);
            }
        }
        public string PrintTicket(string id)
        {
            string configName = System.Configuration.ConfigurationManager.AppSettings["defaultDatabase"];

            //Linq to SQL 上下文对象
            try
            {
                DataContext            dd  = new DataContext(System.Configuration.ConfigurationManager.ConnectionStrings[configName].ConnectionString);
                Table <IoT_MeterTopUp> tbl = dd.GetTable <IoT_MeterTopUp>();
                // 调用新增方法
                IoT_MeterTopUp IoT_MeterTopUpDB = tbl.Where(u => u.ID == Convert.ToInt64(id)).SingleOrDefault();
                IoT_MeterTopUpDB.IsPrint = true;
                // 更新操作
                dd.SubmitChanges();
            }
            catch (Exception e) {
                return(e.Message);
            }
            return("");
        }
Example #5
0
        private string InsertTopUp(IoT_MeterTopUp topUp)
        {
            string configName = System.Configuration.ConfigurationManager.AppSettings["defaultDatabase"];
            //Linq to SQL 上下文对象
            DataContext dd = new DataContext(System.Configuration.ConfigurationManager.ConnectionStrings[configName].ConnectionString);

            try
            {
                Table <IoT_MeterTopUp> tbl = dd.GetTable <IoT_MeterTopUp>();
                // 调用新增方法
                tbl.InsertOnSubmit(topUp);
                // 更新操作
                dd.SubmitChanges();
            }
            catch (Exception e)
            {
                return(e.Message);
            }
            return("");
        }
Example #6
0
        /// <summary>
        /// 创建充值任务
        /// </summary>
        /// <param name="topup">充值数据对象</param>
        /// <param name="taskID"></param>
        /// <returns></returns>
        public string TopUp(IoT_MeterTopUp topup, out string taskID)
        {
            //创建一个任务
            string result = "";
            MongoDBHelper <Task> mongo_task = new MongoDBHelper <Task>();
            Task task = new Task();

            task.MeterMac  = topup.MeterNo.Trim();
            task.TaskDate  = QuShi.getDate();
            task.TaskID    = Guid.NewGuid().ToString(); //用于和指令进行进行关联
            task.TaskState = TaskState.Waitting;
            task.TaskType  = TaskType.TaskType_充值;      //点火任务(DH),换表登记(HB)、开阀(KF)、关阀(GF)、充值(CZ)、调整价格(TJ)
            //写任务
            result = mongo_task.Insert(CollectionNameDefine.TaskCollectionName, task);
            taskID = task.TaskID;
            if (result != "")
            {
                return(result);
            }

            //创建命令
            Command       cmd       = new Command();
            byte          ser       = Convert.ToByte(topup.Ser);//new Random().Next(0, 255));
            DataItem_A013 item_A013 = new DataItem_A013(ser, ser, (decimal)topup.Amount);

            cmd.TaskID         = task.TaskID;
            cmd.Identification = ((UInt16)item_A013.IdentityCode).ToString("X2");
            cmd.ControlCode    = (byte)ControlCode.WriteData;//写操作
            cmd.DataLength     = Convert.ToByte(item_A013.Length);
            cmd.DataCommand    = MyDataConvert.BytesToHexStr(item_A013.GetBytes());
            cmd.Order          = 1;
            result             = CommandDA.Insert(cmd);
            if (result != "")
            {
                return(result);
            }
            return("");
        }
Example #7
0
        /// <summary>
        /// 充值完成
        /// </summary>
        /// <param name="taskID"></param>
        /// <param name="state"></param>
        /// <context></context>
        /// <returns></returns>
        public string TopupFinished(string taskID, TaskState state, string context)
        {
            string              result   = "";
            IoT_MeterTopUp      topUp    = QueryTopUp(taskID);
            M_MeterTopUpService _mmtopup = new M_MeterTopUpService();

            //1、将充值金额增加到用户账户(表)上。
            if (state == TaskState.Finished)
            {
                //充值执行完成
                if (topUp.State == '0')
                {
                    result = Merged(taskID, topUp.MeterNo, (decimal)topUp.Amount);
                    if (result != "")
                    {
                        return(result);
                    }
                    result = _mmtopup.TopUpFinished(taskID, (decimal)topUp.Amount);
                }
                else if (topUp.State == '1')
                {
                    //已撤销
                    _mmtopup.UnTopUp(taskID, "充值已撤销");
                }
            }
            else
            {
                //result = TopupFailed(taskID, (short)state);
            }


            if (result != "")
            {
                return(result);
            }

            return("");
        }
Example #8
0
        /// <summary>
        /// 撤销充值
        /// </summary>
        /// <param name="taskID"></param>
        /// <param name="reason"></param>
        /// <param name="oper"></param>
        /// <returns></returns>
        public string UnTopUp(string taskID, string reason, string oper)
        {
            string result = "";

            //TODO:在做撤销操作前,应先通知通讯调度中心,撤销当前任务,如任务已执行,则本次撤销操作失败。

            //1、向通讯层提交任务撤销请求,返回空表示撤销任务成功。
            result = new M_MeterTopUpService().UnTopUp(taskID, reason);
            if (result != "")
            {
                return(result);
            }

            //2、在数据库登记撤销
            string configName = System.Configuration.ConfigurationManager.AppSettings["defaultDatabase"];
            //Linq to SQL 上下文对象
            DataContext dd = new DataContext(System.Configuration.ConfigurationManager.ConnectionStrings[configName].ConnectionString);

            try
            {
                IoT_MeterTopUp dbinfo = dd.GetTable <IoT_MeterTopUp>().Where(p =>
                                                                             p.TaskID == taskID).SingleOrDefault();
                if (dbinfo == null)
                {
                    return("充值任务不存在。");
                }
                dbinfo.State     = Convert.ToChar(((byte)TaskState.Undo).ToString()); //任务撤销(1)
                dbinfo.TopUpDate = DateTime.Now;
                dbinfo.Context   = reason;                                            //撤销原因
                dd.SubmitChanges();
            }
            catch (Exception e)
            {
                return(e.Message);
            }
            return(result);
        }
Example #9
0
        public string Topup(string meterNo, decimal money, TopUpType topUpType, string oper, string orgCode, IoT_MeterTopUp info)
        {
            IoT_Meter _meter = MeterManageService.QueryMeter(meterNo);
            Meter     _m     = new TaskManageService().GetMeter(meterNo.Trim());

            if (_m == null)
            {
                return(string.Format("表:{0}不存在,充值失败。", meterNo));
            }
            if (_meter == null)
            {
                return(string.Format("表:{0}不存在,充值失败。", meterNo));
            }
            string taskID;//充值任务ID,通讯任务层提供

            if (_m.LastTopUpSer == 0)
            {
                _m.LastTopUpSer++;
            }

            //写充值记录到数据库
            IoT_MeterTopUp _topUp = new IoT_MeterTopUp();

            _topUp.CompanyID  = _meter.CompanyID;
            _topUp.UserID     = _meter.UserID;
            _topUp.MeterID    = _meter.ID;
            _topUp.MeterNo    = _meter.MeterNo;
            _topUp.TopUpType  = Convert.ToChar(((byte)topUpType).ToString());
            _topUp.Amount     = (decimal)money;
            _topUp.Oper       = oper;
            _topUp.OrgCode    = orgCode;
            _topUp.Ser        = _m.LastTopUpSer;
            _topUp.State      = '0';
            _topUp.IsPrint    = false;
            _topUp.TopUpDate  = DateTime.UtcNow.AddHours(8);
            _topUp.PayType    = info.PayType;
            _topUp.SFOperID   = info.SFOperID;
            _topUp.SFOperName = info.SFOperName;
            //任务提交层(mongo)
            M_MeterTopUpService _mtus = new M_MeterTopUpService();
            string result             = _mtus.TopUp(_topUp, out taskID);

            if (result != "")
            {
                return(string.Format("表:{0}不存在,充值失败,原因:{1}", meterNo, result));
            }
            _topUp.TaskID  = taskID;
            _topUp.Context = "";

            new TaskManageDA().UpdateMeter(_m);
            result = InsertTopUp(_topUp);
            Message message = new Message();

            if (result == "")
            {
                message.Result     = true;
                message.TxtMessage = JsonConvert.SerializeObject(_topUp);
            }
            else
            {
                message.Result     = false;
                message.TxtMessage = result;
            }
            return(JsonConvert.SerializeObject(message));;
        }