/// <summary>
        /// 更新设置上传周期任务状态,用于上传周期设置完成,撤销,失败时调用更新。
        /// </summary>
        /// <param name="taskID"></param>
        /// <param name="state">状态: 1 完成 2 撤销  3 失败</param>
        /// <returns></returns>
        public string UpdateUploadCycleState(string taskID, TaskState state)
        {
            if (state == TaskState.Waitting)
            {
                return("状态不能为申请");
            }
            string result     = "";
            string configName = System.Configuration.ConfigurationManager.AppSettings["defaultDatabase"];
            //Linq to SQL 上下文对象
            DataContext dd = new DataContext(System.Configuration.ConfigurationManager.ConnectionStrings[configName].ConnectionString);

            try
            {
                IoT_UploadCycleMeter dbinfo = dd.GetTable <IoT_UploadCycleMeter>().Where(p =>
                                                                                         p.TaskID == taskID).SingleOrDefault();
                dbinfo.State        = Convert.ToChar(((byte)state).ToString());
                dbinfo.FinishedDate = DateTime.Now;
                // 更新操作
                dd.SubmitChanges();

                IoT_SetUploadCycle uploadCycle = null;
                int iCount = dd.GetTable <IoT_UploadCycleMeter>().Where(p => p.TaskID == taskID && p.State.ToString() == "0").Count();
                if (iCount == 0)
                {
                    uploadCycle              = dd.GetTable <IoT_SetUploadCycle>().Where(p => p.ID == dbinfo.ID).SingleOrDefault();
                    uploadCycle.State        = Convert.ToChar(((byte)state).ToString());
                    uploadCycle.FinishedDate = DateTime.Now;
                }
                dd.SubmitChanges();
                if (state == TaskState.Undo)
                {
                    new M_SetParameterService().UnSetParameter(taskID);
                }
                if (state == TaskState.Finished)
                {
                    IoT_Meter meterInfo = dd.GetTable <IoT_Meter>().Where(p => p.MeterNo == dbinfo.MeterNo).SingleOrDefault();
                    meterInfo.UploadCycle = uploadCycle.ReportType;

                    // 更新操作
                    dd.SubmitChanges();
                }
            }
            catch (Exception e)
            {
                result = e.Message;
            }
            return(result);
        }
示例#2
0
        /// <summary>
        /// 批量导入用户
        /// </summary>
        /// <param name="meterNo"></param>
        /// <returns></returns>
        public Message BatchImport(string meterNo)
        {
            // 定义执行结果
            Message m;
            string  configName = System.Configuration.ConfigurationManager.AppSettings["defaultDatabase"];
            //Linq to SQL 上下文对象
            DataContext dd = new DataContext(System.Configuration.ConfigurationManager.ConnectionStrings[configName].ConnectionString);

            try
            {
                Table <IoT_UserTemp> tbl    = dd.GetTable <IoT_UserTemp>();
                IoT_UserTemp         dbInfo = tbl.Where(p => p.MeterNo == meterNo).SingleOrDefault();

                IoT_User user = new IoT_User()
                {
                    UserName  = dbInfo.UserName,
                    CompanyID = dbInfo.CompanyID,
                    Address   = dbInfo.Address,
                    Phone     = dbInfo.Phone,
                    UserType  = dbInfo.UserType,
                    State     = '1'
                };
                bool      result = DateTime.TryParse(dbInfo.InstallDate, out DateTime installDate);
                IoT_Meter meter  = new IoT_Meter()
                {
                    MeterNo     = dbInfo.MeterNo,
                    TotalAmount = dbInfo.MeterNum,
                    InstallType = dbInfo.InstallType,
                    Direction   = dbInfo.Direction,
                    InstallDate = result ? installDate : DateTime.Now,
                    CompanyID   = dbInfo.CompanyID
                };

                m = BatchAddUserMeter(user, meter);
                tbl.DeleteOnSubmit(dbInfo);
                dd.SubmitChanges();
            }
            catch (Exception e)
            {
                m = new Message()
                {
                    Result     = false,
                    TxtMessage = "新增用户失败!" + e.Message
                };
            }
            return(m);
        }
示例#3
0
        public string ValveControlFinished(string taskID, string taskType, TaskState state)
        {
            string result = "";

            //1、向通讯层更新任务执行状态。
            result = M_ValveControlSevice.ValveControlFinished(taskID, state);
            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_ValveControl dbinfo = dd.GetTable <IoT_ValveControl>().Where(p =>
                                                                                 p.TaskID == taskID).SingleOrDefault();
                if (dbinfo == null)
                {
                    return("阀门控制任务不存在。");
                }
                dbinfo.State        = '2';//任务完成
                dbinfo.FinishedDate = DateTime.Now;
                dbinfo.Context      = "";

                //修改阀门状态
                IoT_Meter meterInfo = dd.GetTable <IoT_Meter>().Where(p => p.MeterNo == dbinfo.MeterNo).SingleOrDefault();
                meterInfo.ValveState = taskType == "KF"?'0':'1';
                dd.SubmitChanges();
            }
            catch (Exception e)
            {
                return(e.Message);
            }
            return(result);
        }
示例#4
0
        public Message Edit(IoT_Meter info)
        {
            // 定义执行结果
            Message m;
            string  configName = System.Configuration.ConfigurationManager.AppSettings["defaultDatabase"];
            //Linq to SQL 上下文对象
            DataContext dd = new DataContext(System.Configuration.ConfigurationManager.ConnectionStrings[configName].ConnectionString);

            try
            {
                IoT_Meter dbinfo = dd.GetTable <IoT_Meter>().Where(p =>
                                                                   p.CompanyID == info.CompanyID && p.MeterNo == info.MeterNo).SingleOrDefault();
                if (dbinfo.MKeyVer == 0)
                {
                    //重新设置密钥
                }

                //ConvertHelper.Copy<IoT_Meter>(dbinfo, info);
                dbinfo.MeterState = info.MeterState;
                // 更新操作
                dd.SubmitChanges();

                new TaskManageDA().UpdateMeter(info);//同时更新数据到mongoDB中
                m = new Message()
                {
                    Result     = true,
                    TxtMessage = JSon.TToJson <IoT_Meter>(dbinfo)
                };
            }
            catch (Exception e)
            {
                m = new Message()
                {
                    Result     = false,
                    TxtMessage = "编辑表具失败!" + e.Message
                };
            }
            return(m);
        }
示例#5
0
        public string Undo(IoT_Meter meter)
        {
            DianhuoDA dhDA = new DianhuoDA();

            string result = dhDA.UnDoDianHuo(meter);

            if (result != "")
            {
                return("撤销失败,原因:" + result);
            }
            string configName = System.Configuration.ConfigurationManager.AppSettings["defaultDatabase"];
            //Linq to SQL 上下文对象
            DataContext dd = new DataContext(System.Configuration.ConfigurationManager.ConnectionStrings[configName].ConnectionString);

            try
            {
                IoT_Meter dbinfo = dd.GetTable <IoT_Meter>().Where(p =>
                                                                   p.MeterNo == meter.MeterNo).SingleOrDefault();

                if (dbinfo != null)
                {
                    dbinfo.MeterState = '4';//撤销点火状态,退回到已安装状态
                    // 更新操作
                    dd.SubmitChanges();
                    new UserManageService().UpadteUserStatus("1", meter.UserID);//用户表状态退回到1 等待点火
                }

                return("");
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
#if DEBUG
                Debug.Assert(false, e.Message);
#endif
                return(e.Message);
            }
        }
示例#6
0
        public static string TurnOff(IoT_Meter meter, out string taskID)
        {
            //创建一个任务
            string result = "";
            MongoDBHelper <Task> mongo_task = new MongoDBHelper <Task>();
            Task task = new Task();

            task.MeterMac  = meter.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(new Random().Next(0, 255));
            DataItem_A017 item_A017 = new DataItem_A017(ser, false);

            cmd.TaskID         = task.TaskID;
            cmd.Identification = ((UInt16)item_A017.IdentityCode).ToString("X2");
            cmd.ControlCode    = (byte)ControlCode.WriteData;//写操作
            cmd.DataLength     = Convert.ToByte(item_A017.Length);
            cmd.DataCommand    = MyDataConvert.BytesToHexStr(item_A017.GetBytes());
            cmd.Order          = 1;
            result             = CommandDA.Insert(cmd);
            if (result != "")
            {
                return(result);
            }
            return("");
        }
示例#7
0
        public Message Delete(IoT_Meter info)
        {
            // 定义执行结果
            Message m;
            string  configName = System.Configuration.ConfigurationManager.AppSettings["defaultDatabase"];
            //Linq to SQL 上下文对象
            DataContext dd = new DataContext(System.Configuration.ConfigurationManager.ConnectionStrings[configName].ConnectionString);

            try
            {
                // 获得上下文对象中的表信息
                Table <IoT_Meter> tbl = dd.GetTable <IoT_Meter>();

                var s = tbl.Where(p => p.CompanyID == info.CompanyID && p.MeterNo == info.MeterNo).Single();
                tbl.DeleteOnSubmit(s as IoT_Meter);


                // 更新操作
                dd.SubmitChanges();
                new TaskManageDA().DeleteMeter(info.MeterNo);
                m = new Message()
                {
                    Result     = true,
                    TxtMessage = "删除表具成功!"
                };
            }
            catch (Exception e)
            {
                m = new Message()
                {
                    Result     = false,
                    TxtMessage = "删除表具失败!" + e.Message
                };
            }
            return(m);
        }
示例#8
0
        /// <summary>
        /// 开阀操作
        /// </summary>
        /// <param name="meter"></param>
        /// <returns></returns>
        public string TurnOn(IoT_Meter meter, string reason, string oper)
        {
            //
            string taskID;
            string result = "";

            //1、在通讯层注册开阀任务,成功返回空,输出参数为本次注册的任务ID
            result = M_ValveControlSevice.TurnOn(meter, out taskID);
            //2、登记开阀操作
            IoT_ValveControl valve = new IoT_ValveControl();

            valve.CompanyID    = meter.CompanyID;
            valve.MeterID      = meter.ID;
            valve.MeterNo      = meter.MeterNo;
            valve.RegisterDate = DateTime.Now;
            valve.State        = '0';
            valve.TaskID       = taskID;
            valve.UserID       = meter.UserID;
            valve.Reason       = reason;
            valve.Oper         = oper;
            valve.ControlType  = Convert.ToChar(((byte)ValveControlType.开阀).ToString());
            result             = Insert(valve);
            return(result);
        }
示例#9
0
        public Message DianHuo(List <String> meterNoList, string meterType, Int64 priceId, string companyId, DateTime enableDate, List <String> lstUserID, string EnableMeterOper)
        {
            // 定义执行结果
            Message m;
            string  configName = System.Configuration.ConfigurationManager.AppSettings["defaultDatabase"];
            //Linq to SQL 上下文对象
            DataContext dd = new DataContext(System.Configuration.ConfigurationManager.ConnectionStrings[configName].ConnectionString);

            try
            {
                List <IoT_Meter> dianHuoMeter = new List <IoT_Meter>();

                //获取价格信息
                IoT_PricePar priceInfo = dd.GetTable <IoT_PricePar>().Where(p =>
                                                                            p.CompanyID == companyId && p.ID == priceId).SingleOrDefault();
                //if (priceInfo==null)
                //{
                //     return new Message()
                //    {
                //        Result = false,
                //        TxtMessage = "该表具选择的价格不存在,请加载页面重新选择!"
                //    };
                //}
                foreach (string UserID in lstUserID)
                {
                    IoT_User dbinfo = dd.GetTable <IoT_User>().Where(p => p.UserID == UserID).SingleOrDefault();
                    if (dbinfo != null && dbinfo.State == '2')
                    {
                        return(new Message()
                        {
                            Result = false,
                            TxtMessage = "用户" + dbinfo.UserName + "已发送点火申请,请勿重复发送!"
                        });
                    }
                }
                foreach (string meterNo in meterNoList)
                {
                    IoT_Meter dbinfo = dd.GetTable <IoT_Meter>().Where(p => p.MeterNo == meterNo).SingleOrDefault();
                    if (priceInfo != null)
                    {
                        dbinfo.Price1          = priceInfo.Price1 == null ? 0 : priceInfo.Price1;
                        dbinfo.Gas1            = priceInfo.Gas1 == null ? 0 : priceInfo.Gas1;
                        dbinfo.Price2          = priceInfo.Price2 == null ? 0 : priceInfo.Price2;
                        dbinfo.Gas2            = priceInfo.Gas2 == null ? 0 : priceInfo.Gas2;
                        dbinfo.Price3          = priceInfo.Price3 == null ? 0 : priceInfo.Price3;
                        dbinfo.Gas3            = priceInfo.Gas3 == null ? 0 : priceInfo.Gas3;
                        dbinfo.Price4          = priceInfo.Price4 == null ? 0 : priceInfo.Price4;
                        dbinfo.Gas4            = priceInfo.Gas4 == null ? 0 : priceInfo.Gas4;
                        dbinfo.Price5          = priceInfo.Price5 == null ? 0 : priceInfo.Price5;
                        dbinfo.IsUsed          = priceInfo.IsUsed == null ? false : priceInfo.IsUsed;
                        dbinfo.Ladder          = priceInfo.Ladder == null ? 3 : priceInfo.Ladder;
                        dbinfo.SettlementDay   = priceInfo.SettlementDay;
                        dbinfo.SettlementMonth = priceInfo.SettlementMonth;
                        dbinfo.SettlementType  = priceInfo.SettlementType;
                    }
                    dbinfo.EnableMeterOper = EnableMeterOper;

                    dbinfo.PriceID         = (int)priceId;
                    dbinfo.MeterType       = meterType;
                    dbinfo.EnableMeterDate = enableDate;
                    dbinfo.MeterState      = '5';
                    dianHuoMeter.Add(dbinfo);
                }

                // 更新操作
                dd.SubmitChanges();

                string result = Do(dianHuoMeter);
                if (result == "")
                {
                    m = new Message()
                    {
                        Result     = true,
                        TxtMessage = "点火成功"
                    };
                }
                else
                {
                    m = new Message()
                    {
                        Result     = false,
                        TxtMessage = result
                    };
                }
            }
            catch (Exception e)
            {
                m = new Message()
                {
                    Result     = false,
                    TxtMessage = "" + e.Message
                };
            }
            return(m);
        }
示例#10
0
        public override void DoLoginedHandlerWork(HttpContext context)
        {
            Message jsonMessage;

            jsonMessage = new Message()
            {
                Result     = false,
                TxtMessage = "权限验证失败,可能原因:\n1、数据中心通讯失败。\n2、系统管理员未与您分配对应操作权限。"
            };
            //获取操作类型AType:ADD,EDIT,DELETE
            string AjaxType = context.Request.QueryString["AType"] == null ? string.Empty : context.Request.QueryString["AType"].ToString().ToUpper();

            View_ValveControl Info;
            WCFServiceProxy <IValveControl> proxy      = null;
            WCFServiceProxy <IMeterManage>  proxyMeter = null;



            try
            {
                switch (AjaxType)
                {
                case "QUERY":

                    CommonSearch <View_ValveControl> InfoSearch = new CommonSearch <View_ValveControl>();
                    string Where = "1=1 ";
                    Where += "AND CompanyID='" + loginOperator.CompanyID + "' ";
                    if (context.Request.Form["TWhere"] != null && context.Request.Form["TWhere"].ToString().Trim() != string.Empty)
                    {
                        Where += context.Request.Form["TWhere"].ToString();
                    }
                    SearchCondition sCondition = new SearchCondition()
                    {
                        TBName = "View_ValveControl", TFieldKey = "UserID", TTotalCount = -1, TPageCurrent = 1, TFieldOrder = "RegisterDate Desc", TWhere = Where
                    };
                    List <View_ValveControl> list = InfoSearch.GetList(ref sCondition, context);
                    jsonMessage = new Message()
                    {
                        Result     = true,
                        TxtMessage = JSon.ListToJson <View_ValveControl>(list, sCondition.TTotalCount)
                    };
                    break;



                //开阀
                case "KAIFA":
                    if (CommonOperRightHelper.CheckMenuCode(base.loginOperator, "fmcz_kf"))
                    {
                        proxyMeter = new WCFServiceProxy <IMeterManage>();
                        proxy      = new WCFServiceProxy <IValveControl>();

                        string reason = "";
                        if (context.Request.Form["Reason"] != null && context.Request.Form["Reason"].ToString().Trim() != string.Empty)
                        {
                            reason = context.Request.Form["Reason"].ToString().Trim();
                        }

                        if (context.Request.Form["strNo"] != null && context.Request.Form["strNo"].ToString().Trim() != string.Empty)
                        {
                            string strNo = context.Request.Form["strNo"];

                            string[] arrNo = strNo.Split(',');

                            for (int i = 0; i < arrNo.Length; i++)
                            {
                                IoT_Meter meter = proxyMeter.getChannel.GetMeterByNo(arrNo[i]);
                                proxy.getChannel.TurnOn(meter, reason, loginOperator.Name);
                            }
                        }
                        jsonMessage = new Message()
                        {
                            Result     = true,
                            TxtMessage = "操作成功"
                        };
                    }
                    break;

                //关阀
                case "GUANFA":
                    if (CommonOperRightHelper.CheckMenuCode(base.loginOperator, "fmcz_gf"))
                    {
                        proxyMeter = new WCFServiceProxy <IMeterManage>();
                        proxy      = new WCFServiceProxy <IValveControl>();

                        string reason = "";
                        if (context.Request.Form["Reason"] != null && context.Request.Form["Reason"].ToString().Trim() != string.Empty)
                        {
                            reason = context.Request.Form["Reason"].ToString().Trim();
                        }

                        if (context.Request.Form["strNo"] != null && context.Request.Form["strNo"].ToString().Trim() != string.Empty)
                        {
                            string strNo = context.Request.Form["strNo"];

                            string[] arrNo = strNo.Split(',');

                            for (int i = 0; i < arrNo.Length; i++)
                            {
                                IoT_Meter meter = proxyMeter.getChannel.GetMeterByNo(arrNo[i]);
                                proxy.getChannel.TurnOff(meter, reason, loginOperator.Name);
                            }
                        }
                        jsonMessage = new Message()
                        {
                            Result     = true,
                            TxtMessage = "操作成功"
                        };
                    }
                    break;


                case "UNDO":
                    if (CommonOperRightHelper.CheckMenuCode(base.loginOperator, "fmcz_cx"))
                    {
                        Info  = new CommonModelFactory <View_ValveControl>().GetModelFromContext(context);
                        proxy = new WCFServiceProxy <IValveControl>();
                        proxy.getChannel.Undo(Info.TaskID, Info.Context);

                        jsonMessage = new Message()
                        {
                            Result     = true,
                            TxtMessage = "操作成功"
                        };
                    }
                    break;


                default:
                    jsonMessage = new Message()
                    {
                        Result     = false,
                        TxtMessage = "操作未定义。"
                    };
                    break;
                }
            }
            catch (Exception ex) {
                jsonMessage = new Message()
                {
                    Result     = false,
                    TxtMessage = ex.Message
                };
            }
            finally
            {
                if (proxy != null)
                {
                    proxy.CloseChannel();
                }
            }
            context.Response.Write(JSon.TToJson <Message>(jsonMessage));
        }
示例#11
0
        /// <summary>
        /// 换标登记动作
        /// </summary>
        /// <param name="taskID"></param>
        /// <param name="state"></param>
        /// <returns></returns>
        public Message Dengji(IoT_ChangeMeter info)
        {
            Message     m;
            string      configName = System.Configuration.ConfigurationManager.AppSettings["defaultDatabase"];
            DataContext dd         = new DataContext(System.Configuration.ConfigurationManager.ConnectionStrings[configName].ConnectionString);

            try
            {
                //查看该申请单的状态是否是"换表登记"或者"换表完成"状态,如果是该状态则填写换表登记失败
                IoT_ChangeMeter dbinfo = dd.GetTable <IoT_ChangeMeter>().Where(p =>
                                                                               p.CompanyID == info.CompanyID && p.ID == info.ID).SingleOrDefault();
                //判断当前的申请单的状态
                if (dbinfo.State == '2')//换表登记状态下提示
                {
                    return(new Message()
                    {
                        Result = false,
                        TxtMessage = "不能重复提交换表登记!"
                    });
                }
                else if (dbinfo.State == '3')//换表完成状态下提示
                {
                    return(new Message()
                    {
                        Result = false,
                        TxtMessage = "该用户已换表成功,若需要换表请重新填写申请单!"
                    });
                }
                Table <IoT_MeterHistory> tbHistory   = dd.GetTable <IoT_MeterHistory>();
                Table <IoT_Meter>        tbMeter     = dd.GetTable <IoT_Meter>();
                IoT_Meter        Meter_Model         = tbMeter.Where(u => u.MeterNo == info.OldMeterNo && u.UserID == info.UserID).FirstOrDefault();
                List <IoT_Meter> lstMeter_ModelExect = tbMeter.Where(u => u.MeterNo == info.NewMeterNo).ToList();
                //判断是否存在表具讯息
                if (Meter_Model == null)
                {
                    return(new Message()
                    {
                        Result = false,
                        TxtMessage = "换表登记失败,该用户暂无表具信息!"
                    });
                }
                //判断新表号是否已经存在
                if (lstMeter_ModelExect.Count > 0)
                {
                    return(new Message()
                    {
                        Result = false,
                        TxtMessage = "表号:" + info.NewMeterNo + "已存在,请更换表号"
                    });
                }
                IoT_MeterHistory History_Model = new IoT_MeterHistory()
                {//历史数据实体对象
                    ID              = Meter_Model.ID,
                    MeterNo         = Meter_Model.MeterNo,
                    MeterType       = Meter_Model.MeterType,
                    CompanyID       = Meter_Model.CompanyID,
                    UserID          = Meter_Model.UserID,
                    TotalAmount     = Meter_Model.TotalAmount,
                    TotalTopUp      = Meter_Model.TotalTopUp,
                    Direction       = Meter_Model.Direction,
                    InstallDate     = Meter_Model.InstallDate,
                    Price1          = Meter_Model.Price1,
                    Gas1            = Meter_Model.Gas1,
                    Price2          = Meter_Model.Price2,
                    Gas2            = Meter_Model.Gas2,
                    Price3          = Meter_Model.Price3,
                    Gas3            = Meter_Model.Gas3,
                    Price4          = Meter_Model.Price4,
                    Gas4            = Meter_Model.Gas4,
                    Price5          = Meter_Model.Price5,
                    IsUsed          = Meter_Model.IsUsed,
                    Ladder          = Meter_Model.Ladder,
                    SettlementType  = Meter_Model.SettlementType,
                    SettlementDay   = Meter_Model.SettlementDay,
                    ValveState      = Meter_Model.ValveState,
                    MeterState      = Meter_Model.MeterState,
                    ReadDate        = Meter_Model.ReadDate,
                    RemainingAmount = Meter_Model.RemainingAmount,
                    LastTotal       = Meter_Model.LastTotal,
                    PriceCheck      = Meter_Model.PriceCheck,
                    MKeyVer         = Meter_Model.MKeyVer,
                    MKey            = Meter_Model.MKey,
                    EnableMeterDate = Meter_Model.EnableMeterDate,
                    EnableMeterOper = Meter_Model.EnableMeterOper,
                    UploadCycle     = Meter_Model.UploadCycle,
                    SettlementMonth = Meter_Model.SettlementMonth
                };
                IoT_Meter Meter_Add = new IoT_Meter()
                {//表实体对象
                    MeterNo         = info.NewMeterNo,
                    MeterType       = Meter_Model.MeterType,
                    CompanyID       = info.CompanyID,
                    UserID          = info.UserID,
                    TotalAmount     = info.ChangeUseSum,       //新表表底
                    TotalTopUp      = Meter_Model.TotalTopUp,  //需要更新
                    Direction       = Meter_Model.Direction,
                    InstallDate     = Meter_Model.InstallDate, //需要更新
                    Price1          = Meter_Model.Price1,
                    Gas1            = Meter_Model.Gas1,
                    Price2          = Meter_Model.Price2,
                    Gas2            = Meter_Model.Gas2,
                    Price3          = Meter_Model.Price3,
                    Gas3            = Meter_Model.Gas3,
                    Price4          = Meter_Model.Price4,
                    Gas4            = Meter_Model.Gas4,
                    Price5          = Meter_Model.Price5,
                    IsUsed          = Meter_Model.IsUsed,
                    Ladder          = Meter_Model.Ladder,
                    SettlementType  = Meter_Model.SettlementType,
                    SettlementDay   = Meter_Model.SettlementDay,
                    ValveState      = Meter_Model.ValveState,
                    MeterState      = Meter_Model.MeterState,
                    ReadDate        = Meter_Model.ReadDate,
                    RemainingAmount = Meter_Model.RemainingAmount, //需要更新
                    LastTotal       = Meter_Model.LastTotal,       //需要更新
                    PriceCheck      = Meter_Model.PriceCheck,      //需要更新
                    MKeyVer         = Meter_Model.MKeyVer,
                    MKey            = Meter_Model.MKey,
                    EnableMeterDate = Meter_Model.EnableMeterDate, //需要更新
                    EnableMeterOper = Meter_Model.EnableMeterOper, //需要更新
                    UploadCycle     = Meter_Model.UploadCycle,
                    SettlementMonth = Meter_Model.SettlementMonth
                };
                //实现数据操作
                dbinfo.State           = info.State;
                dbinfo.ChangeUseSum    = info.ChangeUseSum;
                dbinfo.OldGasSum       = info.OldGasSum;
                dbinfo.ChangeGasSum    = info.ChangeGasSum;
                dbinfo.RemainingAmount = info.RemainingAmount;
                dbinfo.NewMeterNo      = info.NewMeterNo;
                dbinfo.TaskID          = Guid.NewGuid().ToString();
                tbMeter.DeleteOnSubmit(Meter_Model);     //删除表
                tbMeter.InsertOnSubmit(Meter_Add);       //新增表
                tbHistory.InsertOnSubmit(History_Model); //新增历史表

                dd.SubmitChanges();

                //获取meterId
                Meter_Add = tbMeter.Where(u => u.MeterNo == info.NewMeterNo && u.UserID == info.UserID).FirstOrDefault();
                //此处调用接口
                if (Meter_Add.MeterType == "01")
                {
                    TaskManageService tms = new TaskManageService();
                    //查原表数据
                    Meter _m = tms.GetMeter(info.OldMeterNo.Trim());
                    //_m.TotalAmount = (decimal)info.OldGasSum;
                    //金额表
                    //1、换表结算
                    decimal LastSettlementGas = _m.LastTotal;//原表上次结算时的表底数
                    //换表用气量 = 换表时表底 - 上次结算表底
                    dbinfo.ChangeUseSum = info.ChangeGasSum - LastSettlementGas;

                    _m = new Settlement().CalculateGasFee(_m, (decimal)info.ChangeGasSum, "", true);

                    Meter_Add.TotalTopUp      = _m.CurrentBalance; //新表上总金额(就是换表的余额)
                    Meter_Add.RemainingAmount = _m.CurrentBalance; //新表上剩余金额(就是换表的余额)
                    Meter_Add.LastTotal       = Meter_Add.TotalAmount;

                    //添加mongo队列表对象
                    string str = new TaskManageDA().ChangeMeterInsert(Meter_Add, _m.CurrentLadder, _m.CurrentPrice, (decimal)dbinfo.ChangeUseSum);
                    if (str != "")
                    {
                        throw new Exception(str);
                    }
                    //2、登记换表操作任务(登记操作指令)
                    str = new M_HuanBiaoService().SubmitASK(dbinfo.TaskID, Meter_Add, (decimal)dbinfo.ChangeUseSum);
                    if (str != "")
                    {
                        throw new Exception(str);
                    }
                }
                else
                {
                    //气量表
                }
                // 更新操作
                dd.SubmitChanges();

                m = new Message()
                {
                    Result     = true,
                    TxtMessage = JSon.TToJson <IoT_ChangeMeter>(info)
                };
            }
            catch (Exception e)
            {
                m = new Message()
                {
                    Result     = false,
                    TxtMessage = "换表登记失败!" + e.Message
                };
            }
            return(m);
        }
示例#12
0
        public override void DoLoginedHandlerWork(HttpContext context)
        {
            Message jsonMessage;

            jsonMessage = new Message()
            {
                Result     = false,
                TxtMessage = "权限验证失败,可能原因:\n1、数据中心通讯失败。\n2、系统管理员未与您分配对应操作权限。"
            };
            //获取操作类型AType:ADD,EDIT,DELETE
            string   AjaxType = context.Request.QueryString["AType"] == null ? string.Empty : context.Request.QueryString["AType"].ToString().ToUpper();
            IoT_User Info; View_UserMeter viewInfo;
            WCFServiceProxy <IUserManage> proxy = null;

            try
            {
                switch (AjaxType)
                {
                //查询用户
                case "QUERY":

                    CommonSearch <IoT_User> InfoSearch = new CommonSearch <IoT_User>();
                    string Where = "1=1 ";
                    Where += "AND CompanyID='" + loginOperator.CompanyID + "' ";
                    if (context.Request.Form["TWhere"] != null && context.Request.Form["TWhere"].ToString().Trim() != string.Empty)
                    {
                        Where += context.Request.Form["TWhere"].ToString();
                    }
                    SearchCondition sCondition = new SearchCondition()
                    {
                        TBName = "IoT_User", TFieldKey = "UserID", TTotalCount = -1, TPageCurrent = 1, TFieldOrder = "UserID ASC", TWhere = Where
                    };
                    List <IoT_User> list = InfoSearch.GetList(ref sCondition, context);
                    jsonMessage = new Message()
                    {
                        Result     = true,
                        TxtMessage = JSon.ListToJson <IoT_User>(list, sCondition.TTotalCount)
                    };
                    break;

                //查询用户表具视图
                case "QUERYVIEW":

                    CommonSearch <View_UserMeter> InfoSearchView = new CommonSearch <View_UserMeter>();
                    Where  = "1=1 ";
                    Where += "AND CompanyID='" + loginOperator.CompanyID + "' ";
                    if (context.Request.Form["TWhere"] != null && context.Request.Form["TWhere"].ToString().Trim() != string.Empty)
                    {
                        Where += context.Request.Form["TWhere"].ToString();
                    }
                    sCondition = new SearchCondition()
                    {
                        TBName = "View_UserMeter", TFieldKey = "UserID", TTotalCount = -1, TPageCurrent = 1, TFieldOrder = "UserID ASC", TWhere = Where
                    };
                    List <View_UserMeter> listView = InfoSearchView.GetList(ref sCondition, context);
                    jsonMessage = new Message()
                    {
                        Result     = true,
                        TxtMessage = JSon.ListToJson <View_UserMeter>(listView, sCondition.TTotalCount)
                    };
                    break;

                //查询临时用户
                case "QUERYTEMP":

                    CommonSearch <IoT_UserTemp> InfoSearchTemp = new CommonSearch <IoT_UserTemp>();
                    Where  = "1=1 ";
                    Where += "AND CompanyID='" + loginOperator.CompanyID + "' ";
                    if (context.Request.Form["TWhere"] != null && context.Request.Form["TWhere"].ToString().Trim() != string.Empty)
                    {
                        Where += context.Request.Form["TWhere"].ToString();
                    }
                    sCondition = new SearchCondition()
                    {
                        TBName = "IoT_UserTemp", TFieldKey = "MeterNo", TTotalCount = -1, TPageCurrent = 1, TFieldOrder = "MeterNo ASC", TWhere = Where
                    };
                    List <IoT_UserTemp> listTemp = InfoSearchTemp.GetList(ref sCondition, context);
                    jsonMessage = new Message()
                    {
                        Result     = true,
                        TxtMessage = JSon.ListToJson <IoT_UserTemp>(listTemp, sCondition.TTotalCount)
                    };
                    break;

                case "QUERYALARMPARM":
                    //TODO:查询用户当前设置的报警参数
                    CommonSearch <Iot_MeterAlarmPara> meterAlarmPara = new CommonSearch <Iot_MeterAlarmPara>();
                    viewInfo = new CommonModelFactory <View_UserMeter>().GetModelFromContext(context);

                    if (viewInfo.MeterNo != null && viewInfo.MeterNo.ToString().Trim() != string.Empty)
                    {
                        Where      = $"MeterNo = '{viewInfo.MeterNo.ToString().Trim()}'";
                        sCondition = new SearchCondition()
                        {
                            TBName = "Iot_MeterAlarmPara", TFieldKey = "MeterNo", TTotalCount = -1, TPageCurrent = 1, TFieldOrder = "MeterNo ASC", TWhere = Where
                        };
                        List <Iot_MeterAlarmPara> listMAP = meterAlarmPara.GetList(ref sCondition, context);
                        if (listMAP.Count == 1)
                        {
                            jsonMessage = new Message()
                            {
                                Result     = true,
                                TxtMessage = JsToJson.SerializeToJsonString(listMAP[0])
                            };
                        }
                        else
                        {
                            jsonMessage = new Message()
                            {
                                Result     = false,
                                TxtMessage = "没有找到配置数据。"
                            };
                        }
                    }
                    break;

                //单户创建
                case "ADD":
                    if (CommonOperRightHelper.CheckMenuCode(base.loginOperator, "cjyh_dhcj"))
                    {
                        Info           = new CommonModelFactory <IoT_User>().GetModelFromContext(context);
                        Info.CompanyID = base.loginOperator.CompanyID;
                        proxy          = new WCFServiceProxy <IUserManage>();
                        jsonMessage    = proxy.getChannel.Add(Info);
                    }
                    break;


                //编辑用户信息和表信息
                case "EDITUSERMETER":
                    if (CommonOperRightHelper.CheckMenuCode(base.loginOperator, "dagl_bjyh"))
                    {
                        viewInfo    = new CommonModelFactory <View_UserMeter>().GetModelFromContext(context);
                        proxy       = new WCFServiceProxy <IUserManage>();
                        jsonMessage = proxy.getChannel.EditUserMeter(viewInfo);
                    }
                    break;

                //删除用户信息和表信息
                case "DELETEUSERMETER":
                    if (CommonOperRightHelper.CheckMenuCode(base.loginOperator, "dagl_scyh"))
                    {
                        viewInfo    = new CommonModelFactory <View_UserMeter>().GetModelFromContext(context);
                        proxy       = new WCFServiceProxy <IUserManage>();
                        jsonMessage = proxy.getChannel.DeleteUserMeter(viewInfo);
                    }
                    break;

                //批量删除用户
                case "BATCHDELETE":
                    if (CommonOperRightHelper.CheckMenuCode(base.loginOperator, "dagl_scyh"))
                    {
                        viewInfo = new CommonModelFactory <View_UserMeter>().GetModelFromContext(context);
                        proxy    = new WCFServiceProxy <IUserManage>();

                        if (context.Request.Form["strNo"] != null && context.Request.Form["strNo"].ToString().Trim() != string.Empty)
                        {
                            string strNo = context.Request.Form["strNo"];

                            string[] arrNo = strNo.Split(',');

                            for (int i = 0; i < arrNo.Length; i++)
                            {
                                proxy.getChannel.BatchDeleteUserMeter(arrNo[i]);
                            }
                        }
                        jsonMessage = new Message()
                        {
                            Result     = true,
                            TxtMessage = "删除用户成功"
                        };
                    }
                    break;

                //批量excel导入
                case "BATCHIMPORT":
                    if (CommonOperRightHelper.CheckMenuCode(base.loginOperator, "cjyh_dhcj"))
                    {
                        viewInfo = new CommonModelFactory <View_UserMeter>().GetModelFromContext(context);
                        proxy    = new WCFServiceProxy <IUserManage>();

                        if (context.Request.Form["strNo"] != null && context.Request.Form["strNo"].ToString().Trim() != string.Empty)
                        {
                            string strNo = context.Request.Form["strNo"];

                            string[] arrNo = strNo.Split(',');

                            for (int i = 0; i < arrNo.Length; i++)
                            {
                                proxy.getChannel.BatchImport(arrNo[i]);
                            }
                        }
                        jsonMessage = new Message()
                        {
                            Result     = true,
                            TxtMessage = "导入用户成功"
                        };
                    }
                    break;

                //批量添加用户
                case "BATCHADD":
                    if (CommonOperRightHelper.CheckMenuCode(base.loginOperator, "cjyh_dhcj"))
                    {
                        viewInfo = new CommonModelFactory <View_UserMeter>().GetModelFromContext(context);
                        proxy    = new WCFServiceProxy <IUserManage>();

                        string street = "";
                        if (context.Request.Form["Street"] != null && context.Request.Form["Street"].ToString().Trim() != string.Empty)
                        {
                            street = context.Request.Form["Street"].ToString().Trim();
                        }
                        string community = "";
                        if (context.Request.Form["Community"] != null && context.Request.Form["Community"].ToString().Trim() != string.Empty)
                        {
                            community = context.Request.Form["Community"].ToString().Trim();
                        }
                        string meterType = "";
                        if (context.Request.Form["MeterType"] != null && context.Request.Form["MeterType"].ToString().Trim() != string.Empty)
                        {
                            meterType = context.Request.Form["MeterType"].ToString().Trim();
                        }

                        if (context.Request.Form["Rows"] != null && context.Request.Form["Rows"].ToString().Trim() != string.Empty)
                        {
                            UserRows    rows     = JsToJson.Deserialize <UserRows>(context.Request.Form["Rows"].ToString());
                            List <User> userlist = rows.Rows;

                            int     count = 0; string error = "";
                            Message tempM = null;
                            foreach (User u in userlist)
                            {
                                if (u.MeterNo.Trim() == "")
                                {
                                    tempM = new Message()
                                    {
                                        Result = false, TxtMessage = string.Format("UserID={0}的表号未填写\r", u.UserID)
                                    };
                                }
                                else
                                {
                                    IoT_User tempUser = new IoT_User();

                                    tempUser.UserID    = u.UserID;
                                    tempUser.UserName  = u.UserName;
                                    tempUser.Address   = u.Address;
                                    tempUser.Community = community;
                                    tempUser.Street    = street;
                                    tempUser.CompanyID = loginOperator.CompanyID;
                                    tempUser.State     = '1';

                                    IoT_Meter tempMeter = new IoT_Meter();
                                    tempMeter.MeterType = meterType;
                                    tempMeter.MeterNo   = u.MeterNo;
                                    tempMeter.CompanyID = loginOperator.CompanyID;
                                    tempM = proxy.getChannel.BatchAddUserMeter(tempUser, tempMeter);
                                }
                                if (tempM.Result)
                                {
                                    count++;
                                }
                                else
                                {
                                    error = tempM.TxtMessage;
                                }
                            }
                            if (count > 0)
                            {
                                jsonMessage = new Message()
                                {
                                    Result     = true,
                                    TxtMessage = "批量添加用户" + count + "个成功," + (userlist.Count - count) + "个失败,失败原因:" + error
                                };
                            }
                            else
                            {
                                jsonMessage = new Message()
                                {
                                    Result     = false,
                                    TxtMessage = "批量添加用户失败"
                                };
                            }
                        }
                    }
                    break;

                default:
                    jsonMessage = new Message()
                    {
                        Result     = false,
                        TxtMessage = "操作未定义。"
                    };
                    break;
                }
            }
            catch (Exception ex) {
                jsonMessage = new Message()
                {
                    Result     = false,
                    TxtMessage = ex.Message
                };
            }
            finally
            {
                if (proxy != null)
                {
                    proxy.CloseChannel();
                }
            }
            context.Response.Write(JSon.TToJson <Message>(jsonMessage));
        }
示例#13
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));;
        }
示例#14
0
        /// <summary>
        /// 撤销申请(分两种状态,1.在申请单状态为申请状态时撤销,此时删除申请单即可2.在换标登记状态下,需要和表进行通讯)
        /// </summary>
        /// <param name="ID"></param>
        /// <param name="CompanyID"></param>
        /// <returns></returns>
        public Message revoke(string ID, string CompanyID)
        {
            // 定义执行结果
            Message m;
            string  configName = System.Configuration.ConfigurationManager.AppSettings["defaultDatabase"];
            //Linq to SQL 上下文对象
            DataContext dd = new DataContext(System.Configuration.ConfigurationManager.ConnectionStrings[configName].ConnectionString);

            try
            {
                //更新主表
                IoT_ChangeMeter dbinfo = dd.GetTable <IoT_ChangeMeter>().Where(p =>
                                                                               p.CompanyID == CompanyID && p.ID == int.Parse(ID.Trim())).SingleOrDefault();

                IoT_MeterHistory dbMeterHistory = dd.GetTable <IoT_MeterHistory>().Where(p =>
                                                                                         p.CompanyID == CompanyID && p.UserID == dbinfo.UserID && p.MeterNo == dbinfo.OldMeterNo).SingleOrDefault();

                IoT_Meter dbMeter = dd.GetTable <IoT_Meter>().Where(p =>
                                                                    p.CompanyID == CompanyID && p.UserID == dbinfo.UserID && p.MeterNo == dbinfo.NewMeterNo).SingleOrDefault();

                //dbinfo.Total = dbinfo.Total - 1;
                if (dbinfo.State == '1')//申请状态
                {
                    //直接删除表中的讯息
                    Table <IoT_ChangeMeter> tbl = dd.GetTable <IoT_ChangeMeter>();
                    tbl.DeleteOnSubmit(dbinfo as IoT_ChangeMeter);
                    dd.SubmitChanges();
                }
                else if (dbinfo.State == '2')//换标登记状态
                {
                    Table <IoT_Meter>        tbl = dd.GetTable <IoT_Meter>();
                    Table <IoT_MeterHistory> tb2 = dd.GetTable <IoT_MeterHistory>();
                    if (dbMeter != null)
                    {
                        //删除新表
                        tbl.DeleteOnSubmit(dbMeter as IoT_Meter);
                    }
                    if (dbMeterHistory != null)
                    {
                        IoT_Meter History_Model = new IoT_Meter()
                        {//实体对象
                            ID              = dbMeterHistory.ID,
                            MeterNo         = dbMeterHistory.MeterNo,
                            MeterType       = dbMeterHistory.MeterType,
                            CompanyID       = dbMeterHistory.CompanyID,
                            UserID          = dbMeterHistory.UserID,
                            TotalAmount     = dbMeterHistory.TotalAmount,
                            TotalTopUp      = dbMeterHistory.TotalTopUp,
                            Direction       = dbMeterHistory.Direction,
                            InstallDate     = dbMeterHistory.InstallDate,
                            Price1          = dbMeterHistory.Price1,
                            Gas1            = dbMeterHistory.Gas1,
                            Price2          = dbMeterHistory.Price2,
                            Gas2            = dbMeterHistory.Gas2,
                            Price3          = dbMeterHistory.Price3,
                            Gas3            = dbMeterHistory.Gas3,
                            Price4          = dbMeterHistory.Price4,
                            Gas4            = dbMeterHistory.Gas4,
                            Price5          = dbMeterHistory.Price5,
                            IsUsed          = dbMeterHistory.IsUsed,
                            Ladder          = dbMeterHistory.Ladder,
                            SettlementType  = dbMeterHistory.SettlementType,
                            SettlementDay   = dbMeterHistory.SettlementDay,
                            ValveState      = dbMeterHistory.ValveState,
                            MeterState      = dbMeterHistory.MeterState,
                            ReadDate        = dbMeterHistory.ReadDate,
                            RemainingAmount = dbMeterHistory.RemainingAmount,
                            LastTotal       = dbMeterHistory.LastTotal,
                            PriceCheck      = dbMeterHistory.PriceCheck,
                            MKeyVer         = dbMeterHistory.MKeyVer,
                            MKey            = dbMeterHistory.MKey,
                            EnableMeterDate = dbMeterHistory.EnableMeterDate,
                            EnableMeterOper = dbMeterHistory.EnableMeterOper,
                            UploadCycle     = dbMeterHistory.UploadCycle,
                            SettlementMonth = dbMeterHistory.SettlementMonth
                        };
                        //将旧表资料重新插入
                        tbl.InsertOnSubmit(History_Model);
                        //将历史表中历史讯息删除
                        tb2.DeleteOnSubmit(dbMeterHistory as IoT_MeterHistory);
                    }
                    dd.SubmitChanges();
                    //调用换标接口
                    ChangeMeterFinished(dbinfo.TaskID, TaskState.Undo);
                }
                else if (dbinfo.State == '3')
                {
                    return(new Message()
                    {
                        Result = false,
                        TxtMessage = "换表已成功,无法撤消!"
                    });
                }
                // 更新操作
                m = new Message()
                {
                    Result     = true,
                    TxtMessage = JSon.TToJson <IoT_ChangeMeter>(dbinfo)
                };
            }
            catch (Exception e)
            {
                m = new Message()
                {
                    Result     = false,
                    TxtMessage = "撤消换表失败!" + e.Message
                };
            }
            return(m);
        }
示例#15
0
        public string AddIotUser(string account, string pwd, string userInfoJson, string meterInfoJson)
        {
            string  LoginPsw  = pwd;
            string  CompanyID = string.Empty;
            string  OperID    = string.Empty;
            IotUser _iotUser  = new IotUser();

            try
            {
                string[] acc = account.Replace("-", "").Split('@');
                if (acc.Length != 2)
                {
                    return("账号错误");
                }
                //验证账号密码
                string result = Login(account, pwd);
                if (result != "")
                {
                    return(result);
                }
                OperID    = acc[0];
                CompanyID = acc[1];

                IoT_User  user  = Newtonsoft.Json.JsonConvert.DeserializeObject <IoT_User>(userInfoJson);
                IoT_Meter meter = Newtonsoft.Json.JsonConvert.DeserializeObject <IoT_Meter>(meterInfoJson);
                user.CompanyID  = CompanyID;
                meter.CompanyID = CompanyID;
                meter.UserID    = user.UserID;
                user.State      = '1';//设置为等待点火状态

                WCFServiceProxy <IUserManage> proxy = new WCFServiceProxy <IUserManage>();
                Message jsonMessage = proxy.getChannel.Add(user);
                if (!jsonMessage.Result)
                {
                    proxy.CloseChannel();
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(jsonMessage));
                }
                IoT_User resultUser = Newtonsoft.Json.JsonConvert.DeserializeObject <IoT_User>(jsonMessage.TxtMessage);
                meter.UserID    = resultUser.UserID;
                meter.MeterType = "00";
                _iotUser.User   = resultUser;

                //表安装
                WCFServiceProxy <IMeterManage> _proxy = new WCFServiceProxy <IMeterManage>();
                jsonMessage = _proxy.getChannel.Add(meter);
                if (!jsonMessage.Result)
                {
                    //删除用户档案
                    proxy.getChannel.Delete(user);
                    proxy.CloseChannel();
                    _proxy.CloseChannel();
                    return(Newtonsoft.Json.JsonConvert.SerializeObject(jsonMessage));;
                }
                proxy.CloseChannel();
                _proxy.CloseChannel();
                IoT_Meter resultMeter = Newtonsoft.Json.JsonConvert.DeserializeObject <IoT_Meter>(jsonMessage.TxtMessage);
                _iotUser.Meter = resultMeter;

                return(Newtonsoft.Json.JsonConvert.SerializeObject(new Message()
                {
                    Result = true,
                    TxtMessage = Newtonsoft.Json.JsonConvert.SerializeObject(_iotUser)
                }));
            }
            catch (Exception e)
            {
                return(Newtonsoft.Json.JsonConvert.SerializeObject(new Message()
                {
                    Result = false,
                    TxtMessage = e.Message
                }));
            }
        }
示例#16
0
        public string UpdateIotUser(string account, string pwd, string userInfoJson, string meterInfoJson)
        {
            string LoginPsw  = pwd;
            string CompanyID = string.Empty;
            string OperID    = string.Empty;

            try
            {
                string[] acc = account.Replace("-", "").Split('@');
                if (acc.Length != 2)
                {
                    return("账号错误");
                }
                OperID    = acc[0];
                CompanyID = acc[1];

                //验证账号密码
                string result = Login(account, pwd);
                if (result != "")
                {
                    return(result);
                }
                IoT_User  user  = Newtonsoft.Json.JsonConvert.DeserializeObject <IoT_User>(userInfoJson);
                IoT_Meter meter = Newtonsoft.Json.JsonConvert.DeserializeObject <IoT_Meter>(meterInfoJson);
                user.CompanyID  = CompanyID;
                meter.CompanyID = CompanyID;
                meter.UserID    = user.UserID;

                View_UserMeter viewInfo = new View_UserMeter()
                {
                    CompanyID = user.CompanyID,
                    Address   = user.Address,
                    Community = user.Community,
                    Door      = user.Door,
                    BGL       = user.BGL,
                    BWGCD     = user.BWGCD,
                    BXGMRQ    = user.BXGMRQ,
                    BXGMRSFZ  = user.BXGMRSFZ,
                    BXYXQ     = user.BXYXQ,
                    BZCZYBH   = user.BZCZYBH,
                    BZFY      = user.BZFY,
                    BZRQ      = user.BZRQ,
                    DY        = user.DY,
                    LD        = user.LD,
                    Phone     = user.Phone,
                    FYQHTR    = user.FYQHTR,
                    UserID    = user.UserID,
                    UserName  = user.UserName,
                    UserType  = user.UserType,
                    SFZH      = user.SFZH,
                    Street    = user.Street,
                    SYBWG     = user.SYBWG,
                    YGBX      = user.YGBX,
                    QYQHTR    = user.QYQHTR,
                    YJBZFY    = user.YJBZFY,
                    YQHTBH    = user.YQHTBH,
                    YQHTQD    = user.YQHTQD,
                    YQHTQDRQ  = user.YQHTQDRQ,
                    ZCZJE     = user.ZCZJE,
                    ZQF       = user.ZQF,
                    ZS        = user.ZS,
                    ZYQL      = user.ZYQL,

                    MeterID      = meter.ID,
                    Direction    = meter.Direction,
                    Installer    = meter.Installer,
                    MeterNo      = meter.MeterNo,
                    IotPhone     = meter.IotPhone,
                    FDKH1        = meter.FDKH1,
                    InstallDate  = meter.InstallDate,
                    InstallPlace = meter.InstallPlace,
                    InstallType  = meter.InstallType,
                    MeterRange   = meter.MeterRange
                };

                WCFServiceProxy <IUserManage> proxy = new WCFServiceProxy <IUserManage>();
                Message jsonMessage = proxy.getChannel.EditUserMeter(viewInfo);
                if (!jsonMessage.Result)
                {
                    return(jsonMessage.TxtMessage);
                }
            }
            catch (Exception e)
            {
            }

            return("");
        }
示例#17
0
        public Message Add(IoT_Pricing info, List <IoT_PricingMeter> meterList)
        {
            // 定义执行结果
            Message m;
            string  configName = System.Configuration.ConfigurationManager.AppSettings["defaultDatabase"];
            //Linq to SQL 上下文对象
            DataContext dd = new DataContext(System.Configuration.ConfigurationManager.ConnectionStrings[configName].ConnectionString);

            try
            {
                //获取价格信息
                IoT_PricePar priceInfo = dd.GetTable <IoT_PricePar>().Where(p =>
                                                                            p.CompanyID == info.CompanyID && p.ID == int.Parse(info.PriceType)).SingleOrDefault();

                info.Price1 = priceInfo.Price1 == null ? 0 : priceInfo.Price1;
                info.Gas1   = priceInfo.Gas1 == null ? 0 : priceInfo.Gas1;
                info.Price2 = priceInfo.Price2 == null ? 0 : priceInfo.Price2;
                info.Gas2   = priceInfo.Gas2 == null ? 0 : priceInfo.Gas2;
                info.Price3 = priceInfo.Price3 == null ? 0 : priceInfo.Price3;
                info.Gas3   = priceInfo.Gas3 == null ? 0 : priceInfo.Gas3;
                info.Price4 = priceInfo.Price4 == null ? 0 : priceInfo.Price4;
                info.Gas4   = priceInfo.Gas4 == null ? 0 : priceInfo.Gas4;
                info.Price5 = priceInfo.Price5 == null ? 0 : priceInfo.Price5;

                info.IsUsed         = priceInfo.IsUsed == null ? false : priceInfo.IsUsed;
                info.Ladder         = priceInfo.Ladder == null ? 3 : priceInfo.Ladder;
                info.SettlementType = priceInfo.SettlementType;
                info.MeterType      = "01";

                //设置调价计划参数和条件任务
                string result = new SetMeterParameter().SetPricingPlan(info, meterList);
                if (result != "")
                {
                    throw new Exception(result);
                }


                Table <IoT_Pricing> tbl = dd.GetTable <IoT_Pricing>();
                // 调用新增方法
                tbl.InsertOnSubmit(info);
                // 更新操作
                dd.SubmitChanges();

                Table <IoT_PricingMeter> tbl_meter = dd.GetTable <IoT_PricingMeter>();
                foreach (IoT_PricingMeter meter in meterList)
                {
                    IoT_Meter tempMeter = MeterManageService.QueryMeter(meter.MeterNo);
                    meter.MeterID = tempMeter.ID;
                    meter.ID      = info.ID;
                    meter.Context = info.Context;
                    meter.State   = '0';//申请
                    tbl_meter.InsertOnSubmit(meter);
                }
                // 更新操作
                dd.SubmitChanges();

                m = new Message()
                {
                    Result     = true,
                    TxtMessage = JSon.TToJson <IoT_Pricing>(info)
                };
            }
            catch (Exception e)
            {
                m = new Message()
                {
                    Result     = false,
                    TxtMessage = "新增调价计划失败!" + e.Message
                };
            }
            return(m);
        }
示例#18
0
        protected override void DoWork(WorkQueue <ReadDataInfo> .EnqueueEventArgs e)
        {
            if (e == null)
            {
                return;
            }
            IoT_MeterDataHistory meterData = new IoT_MeterDataHistory()
            {
                ID              = e.Item._ID,
                MeterID         = e.Item._MeterID,
                MeterNo         = e.Item._MeterNo,
                Ser             = e.Item._Ser,
                ST1             = e.Item._ST1,
                ST2             = e.Item._ST2,
                Gas             = e.Item._Gas,
                LastTotal       = e.Item._LastTotal,
                ReadDate        = e.Item._ReadDate,
                RemainingAmount = e.Item._RemainingAmount
            };

            string configName = System.Configuration.ConfigurationManager.AppSettings["defaultDatabase"];
            //Linq to SQL 上下文对象
            DataContext dd = new DataContext(System.Configuration.ConfigurationManager.ConnectionStrings[configName].ConnectionString);

            try
            {
                //向表IoT_MeterDataHistory中添加记录
                Table <IoT_MeterDataHistory> tbl = dd.GetTable <IoT_MeterDataHistory>();
                // 调用新增方法
                tbl.InsertOnSubmit(meterData);
                // 更新操作
                dd.SubmitChanges();


                //更新表IoT_Meter信息
                IoT_Meter dbinfo = dd.GetTable <IoT_Meter>().Where(p =>
                                                                   p.MeterNo == meterData.MeterNo && p.ID == meterData.MeterID).SingleOrDefault();
                if (dbinfo != null)
                {
                    dbinfo.LastTotal       = meterData.LastTotal;
                    dbinfo.ReadDate        = meterData.ReadDate;
                    dbinfo.TotalAmount     = meterData.Gas;
                    dbinfo.RemainingAmount = meterData.RemainingAmount;
                    dbinfo.ValveState      = meterData.ST1.Substring(0, 2) == "00" ? '0' : '1';
                    dd.SubmitChanges();
                }
                //向表IoT_DayReadMeter中添加抄表数据记录
                int iCount = dd.GetTable <IoT_DayReadMeter>().Where(p =>
                                                                    ((DateTime)p.ReadDate).Year == ((DateTime)meterData.ReadDate).Year && ((DateTime)p.ReadDate).Month == ((DateTime)meterData.ReadDate).Month && ((DateTime)p.ReadDate).Day == ((DateTime)meterData.ReadDate).Day &&
                                                                    p.MeterNo == meterData.MeterNo).Count();
                if (iCount == 0)
                {
                    IoT_DayReadMeter dayReadMeter = new IoT_DayReadMeter();
                    dayReadMeter.Gas             = meterData.Gas;
                    dayReadMeter.MeterID         = meterData.MeterID;
                    dayReadMeter.MeterNo         = meterData.MeterNo;
                    dayReadMeter.ReadDate        = meterData.ReadDate;
                    dayReadMeter.RemainingAmount = meterData.RemainingAmount;
                    dayReadMeter.LastTotal       = meterData.LastTotal;
                    dayReadMeter.ST1             = meterData.ST1.ToString();
                    dayReadMeter.ST2             = meterData.ST2.ToString();
                    dd.GetTable <IoT_DayReadMeter>().InsertOnSubmit(dayReadMeter);
                    dd.SubmitChanges();
                }
            }
            catch (Exception er)
            {
                //异常记录
                Log.getInstance().Write(er, MsgType.Error);
            }
        }
示例#19
0
        /// <summary>
        /// 添加表对象到mongodb库中(用于新表安装)
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public string InsertMeter(IoT_Meter info)
        {
            Meter _meter = QueryMeter(info.MeterNo.Trim());

            if (_meter != null)
            {
                MongoDBHelper <Meter> mongo = new MongoDBHelper <Meter>();
                var iDelete = new QueryDocument();
                iDelete.Add("Mac", info.MeterNo.Trim());
                mongo.Delete(CollectionNameDefine.MeterCollectionName, iDelete);
            }

            Meter meter = new Meter();

            meter.MeterID         = info.ID;
            meter.UserID          = info.CompanyID.Trim() + info.UserID.Trim();
            meter.Key             = info.MKey;
            meter.Mac             = info.MeterNo.Trim();
            meter.MeterState      = info.MeterState.ToString();
            meter.MeterType       = info.MeterType;
            meter.MKeyVer         = (byte)(info.MKeyVer & 0xff);
            meter.PriceCheck      = info.PriceCheck.ToString();
            meter.SettlementDay   = (int)info.SettlementDay;
            meter.SettlementType  = info.SettlementType;
            meter.TotalAmount     = (decimal)info.TotalAmount;
            meter.TotalTopUp      = (decimal)info.TotalTopUp;
            meter.ValveState      = info.ValveState.ToString();
            meter.LastTopUpSer    = 0;
            meter.IsUsedLadder    = (bool)info.IsUsed;
            meter.Ladder          = (int)info.Ladder;
            meter.MeterType       = info.MeterType;
            meter.Price1          = (decimal)info.Price1;
            meter.Price2          = (decimal)info.Price2;
            meter.Price3          = (decimal)info.Price3;
            meter.Price4          = (decimal)info.Price4;
            meter.Price5          = (decimal)info.Price5;
            meter.Gas1            = (decimal)info.Gas1;
            meter.Gas2            = (decimal)info.Gas2;
            meter.Gas3            = (decimal)info.Gas3;
            meter.Gas4            = (decimal)info.Gas4;
            meter.SettlementMonth = (int)info.SettlementMonth;
            meter.SettlementDay   = (int)info.SettlementDay;
            meter.SettlementType  = info.SettlementType;
            meter.CurrentLadder   = 1;
            meter.CurrentPrice    = meter.Price1;
            if (meter.IsUsedLadder && meter.CurrentLadder < meter.Ladder)
            {
                meter.NextSettlementPointGas = meter.TotalAmount + meter.Gas1;
                meter.SetNextSettlementDateTime();
            }
            meter.LastTotal            = meter.TotalAmount;
            meter.LastSettlementAmount = (decimal)info.TotalTopUp;
            meter.LastGasPoint         = meter.TotalAmount;
            meter.CurrentBalance       = (decimal)info.TotalTopUp;
            meter.LJMoney   = 0;
            meter.IsDianHuo = false;//点火标记 false 未点火
            meter.IsPricing = false;
            meter.CreateBillID();

            return(this.InsertMeter(meter));//同时插入数据到mongoDB中
        }
示例#20
0
 public string UpdateMeter(IoT_Meter info)
 {
     return(MeterDA.UpdateMeter(info));
 }
示例#21
0
        public string ChangeMeterInsert(IoT_Meter info, int currentLader, decimal currentPrice, decimal changeUseGas)
        {
            Meter _meter = QueryMeter(info.MeterNo.Trim());

            if (_meter != null)
            {
                MongoDBHelper <Meter> mongo = new MongoDBHelper <Meter>();
                var iDelete = new QueryDocument();
                iDelete.Add("Mac", info.MeterNo.Trim());
                mongo.Delete(CollectionNameDefine.MeterCollectionName, iDelete);
            }

            Meter meter = new Meter();

            meter.MeterID         = info.ID;
            meter.UserID          = info.CompanyID + info.UserID;
            meter.Key             = info.MKey;
            meter.Mac             = info.MeterNo.Trim();
            meter.MeterState      = info.MeterState.ToString();
            meter.MeterType       = info.MeterType;
            meter.MKeyVer         = (byte)(info.MKeyVer & 0xff);
            meter.PriceCheck      = info.PriceCheck.ToString();
            meter.SettlementDay   = (int)info.SettlementDay;
            meter.SettlementType  = info.SettlementType;
            meter.TotalAmount     = (decimal)info.TotalAmount; //表当前累计总量
            meter.TotalTopUp      = (decimal)info.TotalTopUp;  //充值金额
            meter.ValveState      = info.ValveState.ToString();
            meter.LastTopUpSer    = 0;                         //上次充值ver
            meter.IsUsedLadder    = (bool)info.IsUsed;
            meter.Ladder          = (int)info.Ladder;
            meter.MeterType       = info.MeterType;
            meter.Price1          = (decimal)info.Price1;
            meter.Price2          = (decimal)info.Price2;
            meter.Price3          = (decimal)info.Price3;
            meter.Price4          = (decimal)info.Price4;
            meter.Price5          = (decimal)info.Price5;
            meter.Gas1            = (decimal)info.Gas1;
            meter.Gas2            = (decimal)info.Gas2;
            meter.Gas3            = (decimal)info.Gas3;
            meter.Gas4            = (decimal)info.Gas4;
            meter.SettlementMonth = (int)info.SettlementMonth;
            meter.SettlementDay   = (int)info.SettlementDay;
            meter.SettlementType  = info.SettlementType;
            meter.CurrentLadder   = currentLader;
            meter.CurrentPrice    = currentPrice;
            decimal[] gas = new decimal[4];
            gas[0] = meter.Gas1;
            gas[1] = meter.Gas2;
            gas[2] = meter.Gas3;
            gas[3] = meter.Gas4;

            if (meter.IsUsedLadder)
            {
                meter.NextSettlementPointGas = meter.TotalAmount - changeUseGas;
                if (meter.CurrentLadder < meter.Ladder)
                {
                    for (int i = 0; i < meter.CurrentLadder; i++)
                    {
                        meter.NextSettlementPointGas += gas[i];
                    }
                }
                else
                {
                    meter.NextSettlementPointGas = -1;
                }
                meter.SetNextSettlementDateTime();
            }

            meter.LastGasPoint         = meter.TotalAmount;
            meter.CurrentBalance       = (decimal)info.TotalTopUp;
            meter.LastSettlementAmount = meter.CurrentBalance;
            meter.LastTotal            = meter.TotalAmount - changeUseGas;
            meter.LJMoney   = 0;
            meter.IsDianHuo = true;          //点火完成标记
            return(this.InsertMeter(meter)); //同时插入数据到mongoDB中
        }
示例#22
0
        public Message Add(IoT_Meter info)
        {
            // 定义执行结果
            Message m;
            string  configName = System.Configuration.ConfigurationManager.AppSettings["defaultDatabase"];
            //Linq to SQL 上下文对象
            DataContext dd = new DataContext(System.Configuration.ConfigurationManager.ConnectionStrings[configName].ConnectionString);

            try
            {
                Table <IoT_Meter> tbl = dd.GetTable <IoT_Meter>();
                var count             = dd.GetTable <IoT_Meter>().Where(p => p.CompanyID == info.CompanyID && p.MeterNo == info.MeterNo).Count();
                if (count > 0)
                {
                    m = new Message()
                    {
                        Result     = false,
                        TxtMessage = "表号不能重复!"
                    };
                    return(m);
                }
                info.Direction       = info.Direction == null ? "左" : info.Direction;
                info.InstallDate     = info.InstallDate == null ? DateTime.Now : info.InstallDate;
                info.MKeyVer         = info.MKeyVer == null ? 0 : info.MKeyVer;
                info.PriceCheck      = info.PriceCheck == null ? '0' : info.PriceCheck;
                info.SettlementDay   = info.SettlementDay == null ? 28 : info.SettlementDay;
                info.SettlementMonth = info.SettlementMonth == null ? 12 : info.SettlementMonth;
                info.SettlementType  = info.SettlementType == null ? "0" : info.SettlementType;
                info.RemainingAmount = info.RemainingAmount == null ? 0 : info.RemainingAmount;
                info.TotalTopUp      = info.TotalTopUp == null ? 0 : info.TotalTopUp;
                info.TotalAmount     = info.TotalAmount == null ? 0 : info.TotalAmount;
                info.ValveState      = info.ValveState == null ? '0' : info.ValveState;
                info.UploadCycle     = info.UploadCycle == null?getUploadCycle(info.CompanyID) : info.UploadCycle;

                info.MKey = info.MKey == null?getKey(info.CompanyID) : info.MKey;

                info.IsUsed = info.IsUsed == null ? false : info.IsUsed;
                info.Price1 = info.Price1 == null ? 0 : info.Price1;
                info.Price2 = info.Price2 == null ? 0 : info.Price2;
                info.Price3 = info.Price3 == null ? 0 : info.Price3;
                info.Price4 = info.Price4 == null ? 0 : info.Price4;
                info.Price5 = info.Price5 == null ? 0 : info.Price5;
                info.Gas1   = info.Gas1 == null ? 0 : info.Gas1;
                info.Gas2   = info.Gas2 == null ? 0 : info.Gas2;
                info.Gas3   = info.Gas3 == null ? 0 : info.Gas3;
                info.Gas4   = info.Gas4 == null ? 0 : info.Gas4;
                info.Ladder = info.Ladder == null ? 3 : info.Ladder;

                info.MeterState = info.MeterState == null ? '4' : info.MeterState;

                if (info.MeterNo.Length > 14)
                {
                    info.MeterNo = info.MeterNo.Substring(0, 14);
                }
                else if (info.MeterNo.Length < 14)
                {
                    info.MeterNo = info.MeterNo.PadLeft(14, '0');
                }

                // 调用新增方法
                tbl.InsertOnSubmit(info);
                // 更新操作
                dd.SubmitChanges();

                IoT_Meter dbinfo = dd.GetTable <IoT_Meter>().Where(p =>
                                                                   p.CompanyID == info.CompanyID && p.MeterNo == info.MeterNo).SingleOrDefault();

                new TaskManageDA().InsertMeter(dbinfo);//同时插入数据到mongoDB中

                m = new Message()
                {
                    Result     = true,
                    TxtMessage = JSon.TToJson <IoT_Meter>(dbinfo)
                };
            }
            catch (Exception e)
            {
                m = new Message()
                {
                    Result     = false,
                    TxtMessage = "新增表具失败!" + e.Message
                };
            }
            return(m);
        }
示例#23
0
        /// <summary>
        /// 换表申请指令
        /// </summary>
        /// <returns></returns>
        public string SubmitASK(string taskID, IoT_Meter meter, decimal LJGas)
        {
            /*数据标识DI,序号SER,当前累计用量(金额),当前剩余用量(气量/金额),本阶梯周期已使用累计用量(气量)*/

            //创建一个任务
            MongoDBHelper <Task> mongo_task = new MongoDBHelper <Task>();
            Task task = new Task();

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

            Command cmd = new Command();
            byte    ser = Convert.ToByte(new Random().Next(0, 255));

            cmd = new Command();
            //1.写密钥
            //DataItem_A014 item_A014 = new DataItem_A014(ser, (byte)meter.MKeyVer, meter.MKey);//
            //cmd.TaskID = task.TaskID;
            //cmd.Identification = ((UInt16)item_A014.IdentityCode).ToString("X2");
            //cmd.ControlCode = (byte)ControlCode.WriteData;//写操作
            //cmd.DataLength = Convert.ToByte(item_A014.Length);
            //cmd.DataCommand = MyDataConvert.BytesToHexStr(item_A014.GetBytes());
            //cmd.Order = 1;
            //CommandDA.Insert(cmd);

            ////2.设置上传周期
            //DataItem_C105 item_C105 = new DataItem_C105(Convert.ToByte(new Random().Next(0, 255)), ReportCycleType.天周期, 1, 23, 59);
            //cmd = new Command();
            //cmd.TaskID = task.TaskID;
            //cmd.Identification = ((UInt16)item_C105.IdentityCode).ToString("X2");
            //cmd.ControlCode = (byte)ControlCode.CYWriteData;//设置参数
            //cmd.DataLength = Convert.ToByte(item_C105.Length);
            //cmd.DataCommand = MyDataConvert.BytesToHexStr(item_C105.GetBytes());
            //cmd.Order = 2;
            //CommandDA.Insert(cmd);

            ////3.设置报警参数
            //DataItem_C103 item_C103 = new DataItem_C103(Convert.ToByte(new Random().Next(0, 255)), new WaringSwitchSign() { 长期未使用切断报警 = true, 长期未与服务器通讯报警 = true });
            //cmd = new Command();
            //cmd.TaskID = task.TaskID;
            //cmd.Identification = ((UInt16)item_C103.IdentityCode).ToString("X2");
            //cmd.ControlCode = (byte)ControlCode.CYWriteData;//设置参数
            //cmd.DataLength = Convert.ToByte(item_C103.Length);
            //cmd.DataCommand = MyDataConvert.BytesToHexStr(item_C103.GetBytes());
            //cmd.Order = 3;
            //CommandDA.Insert(cmd);

            //4.写价格表
            DataItem_A010 item_A010 = null;
            CT            ct        = new CT(meter.MeterType == "00" ? MeterType.气量表 : MeterType.金额表,
                                             (bool)meter.IsUsed, (JieSuanType)Convert.ToInt16(meter.SettlementType.ToString()), meter.Ladder == null ? 1 : (int)meter.Ladder);

            item_A010           = new DataItem_A010(Convert.ToByte(new Random().Next(0, 255)), ct, DateTime.Now);
            item_A010.Price1    = (decimal)meter.Price1;
            item_A010.Price2    = (decimal)meter.Price2;
            item_A010.Price3    = (decimal)meter.Price3;
            item_A010.Price4    = (decimal)meter.Price4;
            item_A010.Price5    = (decimal)meter.Price5;
            item_A010.UseGas1   = (decimal)meter.Gas1;
            item_A010.UseGas2   = (decimal)meter.Gas2;
            item_A010.UseGas3   = (decimal)meter.Gas3;
            item_A010.UseGas4   = (decimal)meter.Gas4;
            item_A010.StartDate = DateTime.Now;

            cmd                = new Command();
            cmd.TaskID         = task.TaskID;
            cmd.Identification = ((UInt16)item_A010.IdentityCode).ToString("X2");
            cmd.ControlCode    = (byte)ControlCode.WriteData;//设置参数
            cmd.DataLength     = Convert.ToByte(item_A010.Length);
            cmd.DataCommand    = MyDataConvert.BytesToHexStr(item_A010.GetBytes());
            cmd.Order          = 4;
            CommandDA.Insert(cmd);

            //5.写结算日
            DataItem_A011 item_a011 = new DataItem_A011(Convert.ToByte(new Random().Next(0, 255)), Convert.ToByte(meter.SettlementDay));

            item_a011.JieSuanMonth = 1;//根据系统定义取值
            cmd                = new Command();
            cmd.TaskID         = task.TaskID;
            cmd.Identification = ((UInt16)item_a011.IdentityCode).ToString("X2");
            cmd.ControlCode    = (byte)ControlCode.WriteData;//设置参数
            cmd.DataLength     = Convert.ToByte(item_a011.Length);
            cmd.DataCommand    = MyDataConvert.BytesToHexStr(item_a011.GetBytes());

            cmd.Order = 5;
            CommandDA.Insert(cmd);
            //6.写换表指令
            DataItem_C107 item_C107 = new DataItem_C107(Convert.ToByte(new Random().Next(0, 255)), 0.0m, (decimal)meter.TotalTopUp, LJGas);

            cmd                = new Command();
            cmd.TaskID         = task.TaskID;
            cmd.Identification = ((UInt16)item_C107.IdentityCode).ToString("X2");
            cmd.ControlCode    = (byte)ControlCode.CYWriteData;//设置参数
            cmd.DataLength     = Convert.ToByte(item_C107.Length);
            cmd.DataCommand    = MyDataConvert.BytesToHexStr(item_C107.GetBytes());
            cmd.Order          = 6;
            CommandDA.Insert(cmd);
            return("");
        }
示例#24
0
        /// <summary>
        /// 更新调价任务状态
        /// </summary>
        /// <param name="taskID"></param>
        /// <param name="state">状态:0 申请 1 完成 2 撤销  3 失败</param>
        /// <returns></returns>
        public string UpdatePricingTaskState(string taskID, TaskState state)
        {
            if (state == TaskState.Waitting)
            {
                return("状态不能为申请");
            }

            string result     = "";
            string configName = System.Configuration.ConfigurationManager.AppSettings["defaultDatabase"];
            //Linq to SQL 上下文对象
            DataContext dd = new DataContext(System.Configuration.ConfigurationManager.ConnectionStrings[configName].ConnectionString);

            try
            {
                IoT_PricingMeter dbinfo = dd.GetTable <IoT_PricingMeter>().Where(p =>
                                                                                 p.TaskID == taskID).SingleOrDefault();

                dbinfo.State        = Convert.ToChar(((byte)state).ToString());
                dbinfo.FinishedDate = DateTime.Now;
                // 更新操作
                dd.SubmitChanges();

                IoT_Pricing uploadCycle = null;
                int         iCount      = dd.GetTable <IoT_PricingMeter>().Where(p => p.TaskID == taskID && p.State.ToString() == "0").Count();
                if (iCount == 0)//表具任务都执行完成后 更新调价任务状态
                {
                    uploadCycle       = dd.GetTable <IoT_Pricing>().Where(p => p.ID == dbinfo.ID).SingleOrDefault();
                    uploadCycle.State = Convert.ToChar(((byte)state).ToString());
                }
                dd.SubmitChanges();
                IoT_PricePar pricePar = dd.GetTable <IoT_PricePar>().Where(p => p.ID.ToString() == uploadCycle.PriceType).SingleOrDefault();


                if (state == TaskState.Undo)
                {
                    new M_SetParameterService().UnSetParameter(taskID);
                }
                if (state == TaskState.Finished)
                {
                    IoT_Meter meterInfo = dd.GetTable <IoT_Meter>().Where(p => p.MeterNo == dbinfo.MeterNo).SingleOrDefault();

                    meterInfo.Price1 = uploadCycle.Price1 == null ? 0 : uploadCycle.Price1;
                    meterInfo.Gas1   = uploadCycle.Gas1 == null ? 0 : uploadCycle.Gas1;
                    meterInfo.Price2 = uploadCycle.Price2 == null ? 0 : uploadCycle.Price2;
                    meterInfo.Gas2   = uploadCycle.Gas2 == null ? 0 : uploadCycle.Gas2;
                    meterInfo.Price3 = uploadCycle.Price3 == null ? 0 : uploadCycle.Price3;
                    meterInfo.Gas3   = uploadCycle.Gas3 == null ? 0 : uploadCycle.Gas3;
                    meterInfo.Price4 = uploadCycle.Price4 == null ? 0 : uploadCycle.Price4;
                    meterInfo.Gas4   = uploadCycle.Gas4 == null ? 0 : uploadCycle.Gas4;
                    meterInfo.Price5 = uploadCycle.Price5 == null ? 0 : uploadCycle.Price5;

                    meterInfo.IsUsed = uploadCycle.IsUsed == null ? false : uploadCycle.IsUsed;
                    meterInfo.Ladder = uploadCycle.Ladder == null ? 3 : uploadCycle.Ladder;

                    meterInfo.SettlementType  = uploadCycle.SettlementType;
                    meterInfo.SettlementDay   = pricePar.SettlementDay;
                    meterInfo.SettlementMonth = pricePar.SettlementMonth;

                    // 更新操作
                    dd.SubmitChanges();
                }
            }
            catch (Exception e)
            {
                result = e.Message;
            }
            return(result);
        }
示例#25
0
        /// <summary>
        /// 编辑用户档案
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public Message EditUserMeter(View_UserMeter info)
        {
            // 定义执行结果
            Message m;
            string  configName = System.Configuration.ConfigurationManager.AppSettings["defaultDatabase"];
            //Linq to SQL 上下文对象
            DataContext dd = new DataContext(System.Configuration.ConfigurationManager.ConnectionStrings[configName].ConnectionString);

            try
            {
                IoT_User dbinfo = dd.GetTable <IoT_User>().Where(p => p.CompanyID == info.CompanyID && p.UserID == info.UserID).SingleOrDefault();

                //dbinfo.UserID = info.UserID;
                dbinfo.UserName  = info.UserName;
                dbinfo.Street    = info.Street;
                dbinfo.Community = info.Community;
                dbinfo.Door      = info.Door;
                dbinfo.Address   = info.Address;
                dbinfo.Phone     = info.Phone;
                dbinfo.LD        = info.LD;
                dbinfo.DY        = info.DY;
                dbinfo.BGL       = info.BGL;
                dbinfo.BWGCD     = info.BWGCD;
                dbinfo.YGBX      = info.YGBX;
                dbinfo.BXGMRQ    = info.BXGMRQ;
                dbinfo.BXGMRSFZ  = info.BXGMRSFZ;
                dbinfo.BXYXQ     = info.BXYXQ;
                dbinfo.BZCZYBH   = info.BZCZYBH;
                dbinfo.BZFY      = info.BZFY;
                dbinfo.BZRQ      = info.BZRQ;
                dbinfo.FYQHTR    = info.FYQHTR;
                dbinfo.QYQHTR    = info.QYQHTR;
                dbinfo.SFZH      = info.SFZH;
                dbinfo.SYBWG     = info.SYBWG;
                dbinfo.UserType  = info.UserType;
                dbinfo.ZS        = info.ZS;
                dbinfo.YQHTQD    = info.YQHTQD;
                dbinfo.YQHTQDRQ  = info.YQHTQDRQ;
                dbinfo.YQHTBH    = info.YQHTBH;

                IoT_Meter dbMeterinfo = dd.GetTable <IoT_Meter>().Where(p =>
                                                                        p.CompanyID == info.CompanyID && p.UserID == info.UserID).SingleOrDefault();

                if (dbMeterinfo.MeterNo.Trim() != info.MeterNo.Trim())
                {
                    UpadteMeterNo(dbMeterinfo.MeterNo, info.MeterNo);
                }
                dbMeterinfo.FDKH1        = info.FDKH1;
                dbMeterinfo.FDKH2        = info.FDKH2;
                dbMeterinfo.InstallDate  = info.InstallDate;
                dbMeterinfo.Installer    = info.Installer;
                dbMeterinfo.InstallPlace = info.InstallPlace;
                dbMeterinfo.InstallType  = info.InstallType;
                dbMeterinfo.IotPhone     = info.IotPhone;
                dbMeterinfo.MeterRange   = info.MeterRange;
                dbMeterinfo.Direction    = info.Direction;
                dbMeterinfo.MeterModel   = info.MeterModel;



                // 更新操作
                dd.SubmitChanges();

                View_UserMeter viewInfo = dd.GetTable <View_UserMeter>().Where(p =>
                                                                               p.CompanyID == info.CompanyID && p.UserID == info.UserID).SingleOrDefault();

                m = new Message()
                {
                    Result     = true,
                    TxtMessage = JSon.TToJson <View_UserMeter>(viewInfo)
                };
            }
            catch (Exception e)
            {
                m = new Message()
                {
                    Result     = false,
                    TxtMessage = "编辑用户失败!" + e.Message
                };
            }
            return(m);
        }