/// <summary> /// 保存设备数据 /// </summary> /// <param name="md">对象:Meter_id,Esp_id,MeterName=设备名称,MeterAddr=设备地址,Mm_id=设备类型,Inst_loc=安装位置,Multiply=设备倍率,Remark=备注,Disabled=是否弃用</param> /// <returns></returns> public int YdModuleOnSaveMm(v1_gateway_esp_meterVModel Md) { StringBuilder strSql = new StringBuilder(); strSql.Clear(); DataTable obj = new DataTable(); strSql.Append("select count(*) from v1_gateway_esp_meter where Ledger=@Ledger and Meter_id!=@Meter_id and Esp_id=@Esp_id and MeterAddr=@MeterAddr"); obj = SQLHelper.Query(strSql.ToString(), new { Ledger = this.Ledger, Meter_id = Md.Meter_id, Esp_id = Md.Esp_id, MeterAddr = Md.MeterAddr }); if (CommFunc.ConvertDBNullToInt32(obj.Rows[0]["count(*)"]) > 0) { throw new Exception("同一采集器下设备地址重复"); } obj = null; strSql.Clear(); strSql.Append("select count(*) from v1_gateway_esp_meter where Ledger=@Ledger and Meter_id!=@Meter_id and Esp_id=@Esp_id and MeterName=@MeterName"); obj = SQLHelper.Query(strSql.ToString(), new { Ledger = this.Ledger, Meter_id = Md.Meter_id, Esp_id = Md.Esp_id, MeterName = Md.MeterName }); if (CommFunc.ConvertDBNullToInt32(obj.Rows[0]["count(*)"]) > 0) { throw new Exception("同一采集器下设备名称重复"); } obj = null; strSql.Clear(); strSql.Append("select a.Mm_id as mm_id from v1_gateway_esp_meter as a where a.Ledger=@Ledger and a.Meter_id=@Meter_id "); obj = SQLHelper.Query(strSql.ToString(), new { Ledger = this.Ledger, Meter_id = Md.Meter_id }); int mm_id = obj.Rows.Count > 0 ? CommFunc.ConvertDBNullToInt32(obj.Rows[0]["mm_id"]) : 0; if (mm_id != Md.Mm_id) {//删除关系 strSql.Clear(); strSql.Append("delete c"); strSql.Append(" from v1_gateway_esp_meter as a inner join v1_gateway_esp_module as b on a.Ledger=b.Ledger and a.Meter_id=b.Meter_id"); strSql.Append(" inner join v1_map as c on b.Ledger=c.Ledger and b.Module_id=c.Module_id"); strSql.Append(" where a.Ledger=@Ledger and a.Meter_id=@Meter_id"); SQLHelper.Execute(strSql.ToString(), new { Ledger = this.Ledger, Meter_id = Md.Meter_id }); } if (Md.Meter_id == 0) { obj = null; strSql.Clear(); strSql.Append("select max(Meter_id) as cnt from v1_gateway_esp_meter where Ledger=@Ledger"); obj = SQLHelper.Query(strSql.ToString(), new { Ledger = this.Ledger }); Md.Meter_id = obj.Rows.Count > 0 ? CommFunc.ConvertDBNullToInt32(obj.Rows[0]["cnt"]) + 1 : 1; //Md.Meter_id = CommFunc.ConvertDBNullToInt32(obj.Rows[0]["cnt"]) + 1; } strSql.Clear(); strSql.Append("insert into v1_gateway_esp_meter("); strSql.Append("Ledger,Meter_id,Esp_id,MeterName,MeterAddr,MeterNo,Inst_loc,Disabled,Remark,Multiply,EnergyItemCode,Mm_id,Co_id,Create_by,Create_dt,Update_by,Update_dt)"); strSql.Append(" values ("); strSql.Append("@Ledger,@Meter_id,@Esp_id,@MeterName,@MeterAddr,@MeterNo,@Inst_loc,@Disabled,@Remark,@Multiply,'',@Mm_id,0,@Uid,now(),@Uid,now())"); strSql.Append("ON DUPLICATE KEY UPDATE MeterName=@MeterName,MeterAddr=@MeterAddr,MeterNo=@MeterNo,Inst_loc=@Inst_loc,Disabled=@Disabled,"); strSql.Append("Remark=@Remark,Multiply=@Multiply,Mm_id=@Mm_id,Update_by=@Uid,Update_dt=now();"); return(SQLHelper.Execute(strSql.ToString(), new { Ledger = this.Ledger, Meter_id = Md.Meter_id, Esp_id = Md.Esp_id, MeterName = Md.MeterName, MeterAddr = Md.MeterAddr, MeterNo = Md.MeterNo, Inst_loc = Md.Inst_loc, Disabled = Md.Disabled, Remark = Md.Remark, Multiply = Md.Multiply, Mm_id = Md.Mm_id, Uid = this.SysUid })); }
public int UpdateMeterInfo(v1_gateway_esp_meterVModel meter, string moduleType, out string msg) { StringBuilder strSql = new StringBuilder(); strSql.Clear(); DataTable obj = new DataTable(); msg = ""; strSql.Append("select Mm_id from v0_module where Ledger=@Ledger and ModuleType=@ModuleType"); obj = SQLHelper.Query(strSql.ToString(), new { Ledger = this.Ledger, ModuleType = moduleType }); meter.Mm_id = obj.Rows.Count > 0 ? CommFunc.ConvertDBNullToInt32(obj.Rows[0]["Mm_id"]) : 0; if (meter.Mm_id == 0) { msg = "电表型号" + moduleType + "不存在"; throw new Exception("电表型号" + moduleType + "不存在"); } if (meter.Meter_id == 0) { obj = null; strSql.Clear(); strSql.Append("select max(Meter_id) as cnt from v1_gateway_esp_meter where Ledger=@Ledger"); obj = SQLHelper.Query(strSql.ToString(), new { Ledger = this.Ledger }); meter.Meter_id = obj.Rows.Count > 0 ? CommFunc.ConvertDBNullToInt32(obj.Rows[0]["cnt"]) + 1 : 1; } obj = null; strSql.Clear(); strSql.Append("select count(*) as cnt from v1_gateway_esp_meter where Ledger=@Ledger and Meter_id!=@Meter_id and Esp_id=@Esp_id and MeterAddr=@MeterAddr"); obj = SQLHelper.Query(strSql.ToString(), new { Ledger = this.Ledger, Esp_id = meter.Esp_id, Meter_id = meter.Meter_id, MeterAddr = meter.MeterAddr }); if (CommFunc.ConvertDBNullToInt32(obj.Rows[0]["cnt"]) > 0) { msg = "设备地址:" + meter.MeterAddr + "重复"; throw new Exception("设备地址:" + meter.MeterAddr + "重复"); } strSql.Clear(); strSql.Append("insert into v1_gateway_esp_meter("); strSql.Append("Ledger,Meter_id,Esp_id,MeterName,MeterAddr,MeterNo,Inst_loc,Disabled,Remark,Multiply,EnergyItemCode,Mm_id,Co_id,Create_by,Create_dt,Update_by,Update_dt)"); strSql.Append(" values ("); strSql.Append("@Ledger,@Meter_id,@Esp_id,@MeterAddr,@MeterAddr,NULL,'',0,'',@Multiply,NULL,@Mm_id,0,@SysUid,now(),@SysUid,now())"); strSql.Append(" ON DUPLICATE KEY UPDATE MeterAddr=@MeterAddr,Multiply=@Multiply,Mm_id=@Mm_id,Update_by=@SysUid,Update_dt=now();"); SQLHelper.Execute(strSql.ToString(), new { Ledger = this.Ledger, Esp_id = meter.Esp_id, Meter_id = meter.Meter_id, MeterAddr = meter.MeterAddr, Multiply = meter.Multiply, Mm_id = meter.Mm_id, SysUid = this.SysUid }); return(meter.Meter_id); }
private int MeterInfo(DataRow dr, int esp_id) { v1_gateway_esp_meterVModel vm = new v1_gateway_esp_meterVModel() { Esp_id = esp_id, MeterAddr = CommFunc.ConvertDBNullToString(dr["MeterAddr"]), Multiply = CommFunc.ConvertDBNullToDecimal(dr["Multiply"]) }; string moduleType = CommFunc.ConvertDBNullToString(dr["ModuleType"]); string msg = ""; bool isUp = false; //更新 DataTable dtMdInfo = dal.GetMeterInfo(esp_id, vm.MeterAddr); DataRow[] arr = dtMdInfo.Select(); if (arr.Count() > 0) { vm.Meter_id = CommFunc.ConvertDBNullToInt32(arr[0]["Meter_id"]); if (!moduleType.Equals(CommFunc.ConvertDBNullToString(arr[0]["ModuleType"]))) { isUp = true; } else if (vm.Multiply != CommFunc.ConvertDBNullToDecimal(arr[0]["Multiply"])) { isUp = true; } } else { isUp = true; } if (isUp == true) { int meter_id = dal.UpdateMeterInfo(vm, moduleType, out msg); if (meter_id == 0) { dr["ErrCode"] = -1; dr["ErrTxt"] = msg; } } return(vm.Meter_id); }
/// <summary> /// 保存设备数据 /// </summary> /// <param name="md">对象:Meter_id,Esp_id,MeterName=设备名称,MeterAddr=设备地址,MeterNo=设备编号,Mm_id=设备类型,Inst_loc=安装位置,Multiply=设备倍率,Remark=备注,Disabled=是否弃用</param> /// <returns></returns> public APIRst YdModuleOnSaveMm(v1_gateway_esp_meterVModel md) { APIRst rst = new APIRst(); try { if (md.Esp_id == 0) { throw new Exception("所属采集器错误"); } if (string.IsNullOrEmpty(md.MeterName)) { throw new Exception("设备名称不能为空"); } //if (string.IsNullOrEmpty(md.MeterAddr)) // throw new Exception("设备地址不能为空"); //if (md.Multiply == 0) // throw new Exception("设备倍率不能为零"); //if (md.Mm_id == 0) // throw new Exception("设备类型不能为空"); int total = 0; bll.YdModuleOnSaveMm(md); object rows = this.GetYdModuleOnDetail(0, 0, md.Meter_id, 0, out total); object obj = new { total = total, rows = rows }; rst.data = obj; } catch (Exception ex) { rst.rst = false; rst.err.code = (int)ResultCodeDefine.Error; rst.err.msg = ex.Message; FileLog.WriteLog("保存设备数据错误:" + ex.Message + ex.StackTrace); } return(rst); }
/// <summary> /// 保存设备数据 /// </summary> /// <param name="md">对象:Meter_id,Esp_id,MeterName=设备名称,MeterAddr=设备地址,Mm_id=设备类型,Inst_loc=安装位置,Multiply=设备倍率,Remark=备注,Disabled=是否弃用</param> /// <returns></returns> public int YdModuleOnSaveMm(v1_gateway_esp_meterVModel Md) { return(dal.YdModuleOnSaveMm(Md)); }
public APIRst SetYdModuleOnSaveMm(v1_gateway_esp_meterVModel md) { return(infoHelper.YdModuleOnSaveMm(md)); }