/// <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); }
/// <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); }
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); }
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); }
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); } }
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(""); }
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); }
/// <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); }
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); }
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)); }
/// <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); }
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)); }
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));; }
/// <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); }
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 })); } }
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(""); }
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); }
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); } }
/// <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中 }
public string UpdateMeter(IoT_Meter info) { return(MeterDA.UpdateMeter(info)); }
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中 }
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); }
/// <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(""); }
/// <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); }
/// <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); }