Example #1
0
        /// <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 }));
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        /// <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);
        }
Example #5
0
 /// <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));
 }
Example #6
0
 public APIRst SetYdModuleOnSaveMm(v1_gateway_esp_meterVModel md)
 {
     return(infoHelper.YdModuleOnSaveMm(md));
 }