using LeaRun.Application.Entity.NBManage;
using LeaRun.Data;
using LeaRun.Util;
using LeaRun.Util.WebControl;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Threading.Tasks;
using System.Diagnostics;
using Newtonsoft.Json.Linq;
using LeaRun.Util.Log;
using LeaRun.Application.Code;
namespace LeaRun.Application.Service.NBManage
{
///
/// 用户管理
///
public class NBUserManageService
{
SqlHelper sqlHelper = new SqlHelper("NBDB");
Log log = LogFactory.GetLogger(typeof(NBUserManageService));
#region 获取用户列表
///
/// 获取用户列表
///
///
///
///
///
///
///
public string GetNBUserList(Pagination pagination, string keyword, string searchType, string id, string level)
{
if ("".Equals(id) && "".Equals(keyword))
{
return GETNoInfo(pagination);
}
return GetMeterInfo(pagination, keyword, id, level);
}
#endregion
#region 没有数据的时候返回的数据
///
/// 没有数据的时候返回的数据
///
///
///
private string GETNoInfo(Pagination pagination)
{
var watch = CommonHelper.TimerStart();
var JsonData = new
{
rows = "",
total = pagination.total,
page = pagination.page,
records = pagination.records,
costtime = CommonHelper.TimerEnd(watch)
};
return JsonData.ToJson();
}
#endregion
#region 获取区域信息 废弃
///
/// 获取区域信息
///
///
private string GetAreaInfo(Pagination pagination, string keyword, string id, string level)
{
string whereSql = GetLevel(level, id);
var watch = CommonHelper.TimerStart();
StringBuilder where = new StringBuilder(whereSql);
StringBuilder sb = new StringBuilder();
string leftJoinString = " from RMRS_AreaInfo A left join RMRS_BldgInfo B on A.AreaID = B.AreaID left join RMRS_ApmtInfo T on B.BldgID = T.BldgID left join RMRS_RoomInfo R on R.ApmtID = T.ApmtID left join RMRS_MeterInfo M on M.RoomID = R.RoomID ";
//if (!"".Equals(keyword))
//{
// sb.Append(" and (R.RoomNo like '%").Append(keyword + "%' or R.RoomName like '%").Append(keyword + "%')");
//}
string sql = " select count(1) " + leftJoinString + where;
pagination.records = Convert.ToInt32(sqlHelper.ExecuteScalar(sql, CommandType.Text, null));
int start = (pagination.page - 1) * pagination.rows + 1;
int end = pagination.page * pagination.rows;
sql = "SELECT PageTable.AreaID, PageTable.AreaName FROM " +
"( " +
"SELECT " +
" ROW_NUMBER() OVER(ORDER BY RoomID) AS RowIndex," +
" * " +
"FROM " +
" (select A.AreaID, A.AreaName, B.BldgID, B.BldgNo, B.BldgName, T.ApmtID, T.ApmtNo, T.ApmtName, R.RoomID, R.RoomNo, R.RoomName, R.UserNo, R.UserName, M.MeterID, M.ElecAddress " +
leftJoinString + where + ") as mytable " +
" )" +
" AS PageTable " +
" WHERE RowIndex BETWEEN " + start + " AND " + end;
return GetData(watch, pagination, sql);
}
#endregion
#region 获取楼宇信息 废弃
///
/// 获取楼宇信息
///
///
private string GetBldgInfo(Pagination pagination, string keyword, string id, string level)
{
string whereSql = GetLevel(level, id);
var watch = CommonHelper.TimerStart();
StringBuilder where = new StringBuilder(whereSql);
StringBuilder sb = new StringBuilder();
string leftJoinString = " from RMRS_AreaInfo A left join RMRS_BldgInfo B on A.AreaID = B.AreaID left join RMRS_ApmtInfo T on B.BldgID = T.BldgID left join RMRS_RoomInfo R on R.ApmtID = T.ApmtID left join RMRS_MeterInfo M on M.RoomID = R.RoomID ";
//if (!"".Equals(keyword))
//{
// sb.Append(" and (R.RoomNo like '%").Append(keyword + "%' or R.RoomName like '%").Append(keyword + "%')");
//}
string sql = " select count(1) " + leftJoinString + where;
pagination.records = Convert.ToInt32(sqlHelper.ExecuteScalar(sql, CommandType.Text, null));
int start = (pagination.page - 1) * pagination.rows + 1;
int end = pagination.page * pagination.rows;
sql = "SELECT PageTable.AreaID, PageTable.AreaName, PageTable.BldgID, PageTable.BldgNo, PageTable.BldgName FROM " +
"( " +
"SELECT " +
" ROW_NUMBER() OVER(ORDER BY RoomID) AS RowIndex," +
" * " +
"FROM " +
" (select A.AreaID, A.AreaName, B.BldgID, B.BldgNo, B.BldgName, T.ApmtID, T.ApmtNo, T.ApmtName, R.RoomID, R.RoomNo, R.RoomName, R.UserNo, R.UserName, M.MeterID, M.ElecAddress " +
leftJoinString + where + ") as mytable " +
" )" +
" AS PageTable " +
" WHERE RowIndex BETWEEN " + start + " AND " + end;
return GetData(watch, pagination, sql);
}
#endregion
#region 获取单元信息 废弃
///
/// 获取单元信息
///
///
private string GetApmtInfo(Pagination pagination, string keyword, string id, string level)
{
string whereSql = GetLevel(level, id);
var watch = CommonHelper.TimerStart();
StringBuilder where = new StringBuilder(whereSql);
StringBuilder sb = new StringBuilder();
string leftJoinString = " from RMRS_AreaInfo A left join RMRS_BldgInfo B on A.AreaID = B.AreaID left join RMRS_ApmtInfo T on B.BldgID = T.BldgID left join RMRS_RoomInfo R on R.ApmtID = T.ApmtID left join RMRS_MeterInfo M on M.RoomID = R.RoomID ";
//if (!"".Equals(keyword))
//{
// sb.Append(" and (R.RoomNo like '%").Append(keyword + "%' or R.RoomName like '%").Append(keyword + "%')");
//}
string sql = " select count(1) " + leftJoinString + where;
pagination.records = Convert.ToInt32(sqlHelper.ExecuteScalar(sql, CommandType.Text, null));
int start = (pagination.page - 1) * pagination.rows + 1;
int end = pagination.page * pagination.rows;
sql = "SELECT PageTable.AreaID, PageTable.AreaName, PageTable.BldgID, PageTable.BldgNo, PageTable.BldgName, PageTable.ApmtID, PageTable.ApmtNo, PageTable.ApmtName FROM " +
"( " +
"SELECT " +
" ROW_NUMBER() OVER(ORDER BY RoomID) AS RowIndex," +
" * " +
"FROM " +
" (select A.AreaID, A.AreaName, B.BldgID, B.BldgNo, B.BldgName, T.ApmtID, T.ApmtNo, T.ApmtName, R.RoomID, R.RoomNo, R.RoomName, R.UserNo, R.UserName, M.MeterID, M.ElecAddress " +
leftJoinString + where + ") as mytable " +
" )" +
" AS PageTable " +
" WHERE RowIndex BETWEEN " + start + " AND " + end;
return GetData(watch, pagination, sql);
}
#endregion
#region 获取用户信息 废弃
///
/// 获取用户信息
///
///
private string GetRoomInfo(Pagination pagination, string keyword, string id, string level)
{
string whereSql = GetLevel(level, id);
var watch = CommonHelper.TimerStart();
StringBuilder where = new StringBuilder(whereSql);
StringBuilder sb = new StringBuilder();
string leftJoinString = " from RMRS_AreaInfo A left join RMRS_BldgInfo B on A.AreaID = B.AreaID left join RMRS_ApmtInfo T on B.BldgID = T.BldgID left join RMRS_RoomInfo R on R.ApmtID = T.ApmtID left join RMRS_MeterInfo M on M.RoomID = R.RoomID ";
//if (!"".Equals(keyword))
//{
// sb.Append(" and (R.RoomNo like '%").Append(keyword + "%' or R.RoomName like '%").Append(keyword + "%')");
//}
string sql = " select count(1) " + leftJoinString + where;
pagination.records = Convert.ToInt32(sqlHelper.ExecuteScalar(sql, CommandType.Text, null));
int start = (pagination.page - 1) * pagination.rows + 1;
int end = pagination.page * pagination.rows;
sql = "SELECT PageTable.AreaID, PageTable.AreaName, PageTable.BldgID, PageTable.BldgNo, PageTable.BldgName, PageTable.ApmtID, PageTable.ApmtNo, PageTable.ApmtName, PageTable.RoomID, PageTable.RoomNo, PageTable.RoomName, PageTable.UserNo, PageTable.UserName FROM " +
"( " +
"SELECT " +
" ROW_NUMBER() OVER(ORDER BY RoomID) AS RowIndex," +
" * " +
"FROM " +
" (select A.AreaID, A.AreaName, B.BldgID, B.BldgNo, B.BldgName, T.ApmtID, T.ApmtNo, T.ApmtName, R.RoomID, R.RoomNo, R.RoomName, R.UserNo, R.UserName, M.MeterID, M.ElecAddress " +
leftJoinString + where + ") as mytable " +
" )" +
" AS PageTable " +
" WHERE RowIndex BETWEEN " + start + " AND " + end;
return GetData(watch, pagination, sql);
}
///
/// 保存表移动后的位置信息
///
/// NB表ID
/// 小区ID
/// 楼宇ID
/// 单元ID
/// 房间ID
///
public string SaveMeterRemove(string meterId, string areaId, string bldgId, string apmtId, string roomId)
{
AreaInfoEntity areaInfoEntity; //小区信息
BldgInfoEntity bldgInfoEntity; //楼宇信息
ApmtInfoEntity apmtInfoEntity; //单元信息
NBUserEntity nBUserEntity; // 房间信息
NBMeterEntity nBMeterEntity;// NB表信息
string resultMessage = "移表成功"; //返回结果消息
string updateSql; //更新SQL
int sqlResult = 0; //更新SQL 影响的行数
areaInfoEntity = GetAreaInfo(areaId);
bldgInfoEntity = GetBldgInfo(bldgId);
apmtInfoEntity = GetApmtInfo(apmtId);
nBUserEntity = GetUserInfo(roomId);
nBMeterEntity = GetMeterByMeterId(meterId);
// 判断五个ID 在数据库中是否真正的存在
if (areaInfoEntity != null && bldgInfoEntity != null && apmtInfoEntity != null && nBUserEntity != null && nBMeterEntity != null)
{
updateSql = "UPDATE RMRS_MeterInfo SET AreaID=" + areaId + ", BldgID=" + bldgId + ", ApmtID=" + apmtId + ", RoomID=" + roomId + " WHERE MeterID =" + meterId;
sqlResult = sqlHelper.ExecuteNoParams(updateSql, CommandType.Text);
if (sqlResult > 0)
{
resultMessage = "{code:1,message:\"移表操作成功\"}";
}
else
{
resultMessage = "{code:0,message:\"移表操作失败\"}";
}
}
else
{
resultMessage = "{code:0,message:\"参数不合法\"}";
}
return resultMessage;
}
#endregion
#region 获取表具信息
///
/// 获取表具信息
///
///
private string GetMeterInfo(Pagination pagination, string keyword, string id, string level)
{
StringBuilder where = new StringBuilder();
if (!"".Equals(id))
{
string whereSql = GetLevel(level, id);
where.Append(whereSql);
}
Stopwatch watch = CommonHelper.TimerStart();
StringBuilder sb = new StringBuilder();
if (!"".Equals(keyword))
{
if (!"".Equals(id))
{
where.Append(" and ");
}
else
{
where.Append(" where ");
}
where.Append(" (AreaName like '%")
//.Append(keyword + "%' or BldgNo like '%")
.Append(keyword + "%' or BldgName like '%")
.Append(keyword + "%' or ApmtName like '%")
//.Append(keyword + "%' or ApmtNo like '%")
//.Append(keyword + "%' or RoomNo like '%")
.Append(keyword + "%' or RoomName like '%")
.Append(keyword + "%' or UserNo like '%")
.Append(keyword + "%' or ElecAddress like '%")
.Append(keyword + "%' or UserName like '%").Append(keyword + "%')");
}
string sql = " SELECT * FROM dbo.V_WaterMeters " + where;
if (!OperatorProvider.Provider.Current().IsSystem)
{
sql = sql + " AND CompanyId='" + OperatorProvider.Provider.Current().CompanyId + "'";
}
//return GetData(watch, pagination, sql);
int total = pagination.records;
DataTable dt = sqlHelper.ExecuteDataTable(sql, pagination.sidx, pagination.sord, pagination.rows, pagination.page, out total, null);
pagination.records = total;
if (dt.Rows.Count == 0)
{
return GETNoInfo(pagination);
}
//List list = DataHelper.DataTableToT(dt);
var JsonData = new
{
rows = dt,
total = pagination.total,
page = pagination.page,
records = pagination.records,
costtime = CommonHelper.TimerEnd(watch)
};
return JsonData.ToJson();
}
#endregion
#region 获取等级信息
///
/// 获取等级信息
///
///
///
private string GetLevel(string level, string id)
{
StringBuilder whereSql = new StringBuilder();
switch (level)
{
case "level0":
whereSql.Append("where CompanyId = '").Append(id + " '");
break;
case "level1":
whereSql.Append("where AreaID = ").Append(id);
break;
case "level2":
whereSql.Append("where BldgID = ").Append(id);
break;
case "level3":
whereSql.Append("where ApmtID = ").Append(id);
break;
case "level4":
whereSql.Append("where RoomID = ").Append(id);
break;
case "level5":
whereSql.Append("where MeterID = ").Append(id);
break;
default:
break;
}
return whereSql.ToString();
}
#endregion
#region 获取数据
///
/// 获取数据
///
///
///
private string GetData(Stopwatch watch, Pagination pagination, string sql)
{
try
{
DataTable dt = sqlHelper.ExecuteDataTable(sql, CommandType.Text, null);
if (dt.Rows.Count == 0)
{
return GETNoInfo(pagination);
}
//List list = DataHelper.DataTableToT(dt);
var JsonData = new
{
rows = dt,
total = pagination.total,
page = pagination.page,
records = pagination.records,
costtime = CommonHelper.TimerEnd(watch)
};
return JsonData.ToJson();
}
catch (Exception e)
{
throw e;
}
}
#endregion
#region 保存区域数据
///
/// 保存区域数据
///
///
/// 0:失败,2:重复,1:成功
public int SaveAreaForm(string data)
{
try
{
AreaInfoEntity entity = data.ToObject();
StringBuilder searchSql = new StringBuilder(" select count(1) from RMRS_AreaInfo where AreaName = ").Append("'" + entity.AreaName + "'");
if (Convert.ToInt32(sqlHelper.ExecuteScalar(searchSql.ToString(), CommandType.Text, null)) > 0)
{
return 2;
}
StringBuilder sb = new StringBuilder(" insert into RMRS_AreaInfo ( AreaName, AreaLoc, AreaMemo ,CompanyId ) values ( ")
.Append("'" + entity.AreaName + "', ")
.Append("'" + entity.AreaLoc + "', ")
.Append("'" + entity.AreaMemo + "',")
.Append("'" + OperatorProvider.Provider.Current().CompanyId + "')");
return sqlHelper.ExecuteNoParams(sb.ToString(), CommandType.Text) > 0 ? 1 : 0;
}
catch (Exception)
{
throw;
}
}
#endregion
#region 获取区域信息
///
/// 获取区域信息
///
///
public AreaInfoEntity GetAreaInfo(string id)
{
StringBuilder sb = new StringBuilder(" select AreaName, AreaLoc, AreaMemo from RMRS_AreaInfo where AreaID = ").Append(id);
try
{
DataTable dt = sqlHelper.ExecuteDataTable(sb.ToString(), CommandType.Text, null);
if (dt.Rows.Count > 0)
{
AreaInfoEntity entity = new AreaInfoEntity();
entity.AreaName = dt.Rows[0]["AreaName"].ToString();
entity.AreaLoc = dt.Rows[0]["AreaLoc"].ToString();
entity.AreaMemo = dt.Rows[0]["AreaMemo"].ToString();
return entity;
}
else
{
return null;
}
}
catch (Exception)
{
return null;
}
}
#endregion
#region 修改小区信息
///
/// 修改小区信息
///
///
///
public int EditAreaForm(string id, string data)
{
try
{
AreaInfoEntity entity = data.ToObject();
StringBuilder sb = new StringBuilder(" update RMRS_AreaInfo set AreaName = ")
.Append("'" + entity.AreaName + "', AreaLoc = ")
.Append("'" + entity.AreaLoc + "', AreaMemo = ")
.Append("'" + entity.AreaMemo + "'")
.Append(" where AreaID = ").Append(id)
;
return sqlHelper.ExecuteNoParams(sb.ToString(), CommandType.Text) > 0 ? 1 : 0;
}
catch (Exception)
{
throw;
}
}
#endregion
#region 删除区域信息
///
/// 删除区域信息
///
///
///
public int DeleteAreaForm(string id)
{
//删除前判断 有无楼宇信息
string selSql = "select * from RMRS_BldgInfo where AreaID = " + id;
DataTable dtResult = sqlHelper.ExecuteDataTable(selSql, CommandType.Text, null);
if (dtResult.Rows.Count > 0)
{
return 2;
}
StringBuilder sb = new StringBuilder("delete from RMRS_AreaInfo where AreaID = ").Append(id);
try
{
return sqlHelper.ExecuteNoParams(sb.ToString(), CommandType.Text) > 0 ? 1 : 0;
}
catch (Exception)
{
throw;
}
}
#endregion
#region 保存楼宇信息
///
/// 保存楼宇信息
///
///
///
public int SaveBldgForm(string parentId, string data)
{
try
{
BldgInfoEntity entity = data.ToObject();
StringBuilder sb = new StringBuilder(" insert into RMRS_BldgInfo ( AreaID, BldgName ) values ( ")
.Append(parentId + ", ")
.Append("'" + entity.BldgName + "' )");
return sqlHelper.ExecuteNoParams(sb.ToString(), CommandType.Text) > 0 ? 1 : 0;
}
catch (Exception)
{
throw;
}
}
///
/// 批量保存楼宇信息
///
///
///
public int SaveBatchBldgForm(string parentId, string data)
{
try
{
JObject jObj = Json.ToJObject(data);
int benginBldbNo = Convert.ToInt32(jObj["BldgBeginNo"].ToString());
int bldgNum = Convert.ToInt32(jObj["BldgNum"].ToString());
string bldgExtName = jObj["BldgExtName"].ToString();
for (int i = 0; i < bldgNum; i++)
{
BldgInfoEntity entity = new BldgInfoEntity();
entity.BldgName = (benginBldbNo + i) + bldgExtName;
StringBuilder sb = new StringBuilder(" insert into RMRS_BldgInfo ( AreaID, BldgName, BldgNo ) values ( ")
.Append(parentId + ", ")
.Append("'" + entity.BldgName + "' ) ");
sqlHelper.ExecuteNoParams(sb.ToString(), CommandType.Text);
}
return 1;
}
catch (Exception)
{
throw;
}
}
#endregion
#region 获取楼宇信息
///
/// 获取楼宇信息
///
///
///
public BldgInfoEntity GetBldgInfo(string id)
{
StringBuilder sb = new StringBuilder(" select BldgName, BldgNo ,AreaID from RMRS_BldgInfo where BldgID = ").Append(id);
try
{
DataTable dt = sqlHelper.ExecuteDataTable(sb.ToString(), CommandType.Text, null);
if (dt.Rows.Count > 0)
{
BldgInfoEntity entity = new BldgInfoEntity();
entity.BldgName = dt.Rows[0]["BldgName"].ToString();
entity.BldgNo = dt.Rows[0]["BldgNo"].ToString();
entity.AreaID = dt.Rows[0]["AreaID"].ToString();
return entity;
}
else
{
return null;
}
}
catch (Exception)
{
return null;
}
}
#endregion
#region 修改楼宇信息
///
/// 修改楼宇信息
///
///
///
///
public int EditBldgForm(string parentId, string id, string data)
{
try
{
BldgInfoEntity entity = data.ToObject();
StringBuilder sb = new StringBuilder(" update RMRS_BldgInfo set BldgName = ")
.Append("'" + entity.BldgName + "' ")
.Append(" where BldgID = ").Append(id);
return sqlHelper.ExecuteNoParams(sb.ToString(), CommandType.Text) > 0 ? 1 : 0;
}
catch (Exception)
{
throw;
}
}
#endregion
#region 删除楼宇信息
///
/// 删除楼宇信息
///
///
///
public int DeleteBldgForm(string id)
{
//删除前判断 有无单元信息
string selSql = "select * from RMRS_ApmtInfo where BldgID = " + id;
DataTable dtResult = sqlHelper.ExecuteDataTable(selSql, CommandType.Text, null);
if (dtResult.Rows.Count > 0)
{
return 2;
}
StringBuilder sb = new StringBuilder("delete from RMRS_BldgInfo where BldgID = ").Append(id);
try
{
return sqlHelper.ExecuteNoParams(sb.ToString(), CommandType.Text) > 0 ? 1 : 0;
}
catch (Exception)
{
throw;
}
}
#endregion
#region 保存单元信息
///
/// 保存单元信息
///
///
///
public int SaveApmtForm(string parentId, string data)
{
try
{
ApmtInfoEntity entity = data.ToObject();
StringBuilder sb = new StringBuilder(" insert into RMRS_ApmtInfo ( BldgID, ApmtName ) values ( ")
.Append(parentId + ", ")
.Append("'" + entity.ApmtName + "') ");
return sqlHelper.ExecuteNoParams(sb.ToString(), CommandType.Text) > 0 ? 1 : 0;
}
catch (Exception)
{
throw;
}
}
///
/// 批量保存楼宇信息
///
///
///
public int SaveBatchApmtForm(string parentId, string data)
{
try
{
JObject jObj = Json.ToJObject(data);
int benginApmtNo = Convert.ToInt32(jObj["ApmtBeginNo"].ToString());
int apmtNum = Convert.ToInt32(jObj["ApmtNum"].ToString());
string apmtExtName = jObj["ApmtExtName"].ToString();
for (int i = 0; i < apmtNum; i++)
{
ApmtInfoEntity entity = new ApmtInfoEntity();
entity.ApmtName = (benginApmtNo + i) + apmtExtName;
entity.ApmtNo = (benginApmtNo + i).ToString();
StringBuilder sb = new StringBuilder(" insert into RMRS_ApmtInfo ( BldgID, ApmtName) values ( ")
.Append(parentId + ", ")
.Append("'" + entity.ApmtName + "')");
sqlHelper.ExecuteNoParams(sb.ToString(), CommandType.Text);
}
return 1;
}
catch (Exception)
{
throw;
}
}
#endregion
#region 获取单元信息
///
/// 获取单元信息
///
///
///
public ApmtInfoEntity GetApmtInfo(string id)
{
StringBuilder sb = new StringBuilder(" select ApmtName, ApmtNo,BldgID from RMRS_ApmtInfo where ApmtID = ").Append(id);
try
{
DataTable dt = sqlHelper.ExecuteDataTable(sb.ToString(), CommandType.Text, null);
if (dt.Rows.Count > 0)
{
ApmtInfoEntity entity = new ApmtInfoEntity();
entity.ApmtName = dt.Rows[0]["ApmtName"].ToString();
entity.ApmtNo = dt.Rows[0]["ApmtNo"].ToString();
entity.BldgID = dt.Rows[0]["BldgID"].ToString();
return entity;
}
else
{
return null;
}
}
catch (Exception)
{
return null;
}
}
#endregion
#region 修改单元信息
///
/// 修改单元信息
///
///
///
///
public int EditApmtForm(string parentId, string id, string data)
{
try
{
ApmtInfoEntity entity = data.ToObject();
StringBuilder sb = new StringBuilder(" update RMRS_ApmtInfo set ApmtName = ")
.Append("'" + entity.ApmtName + "'")
.Append(" where ApmtID = ").Append(id);
return sqlHelper.ExecuteNoParams(sb.ToString(), CommandType.Text) > 0 ? 1 : 0;
}
catch (Exception)
{
throw;
}
}
#endregion
#region 删除单元信息
///
/// 删除单元信息
///
///
///
public int DeleteApmtForm(string id)
{
//删除前判断 有无用户数据
string selSql = "select * from RMRS_RoomInfo where ApmtID = " + id;
DataTable dtResult = sqlHelper.ExecuteDataTable(selSql, CommandType.Text, null);
if (dtResult.Rows.Count > 0)
{
return 2;
}
StringBuilder sb = new StringBuilder("delete from RMRS_ApmtInfo where ApmtID = ").Append(id);
try
{
return sqlHelper.ExecuteNoParams(sb.ToString(), CommandType.Text) > 0 ? 1 : 0;
}
catch (Exception)
{
throw;
}
}
#endregion
#region 保存用户信息
///
/// 保存用户信息
///
///
///
public int SaveUserForm(string parentId, string data)
{
try
{
NBUserEntity entity = data.ToObject();
entity.ApmtID = parentId;
string insertSql = DataHelper.ModelToInsertSql(entity, "RMRS_RoomInfo");
return Convert.ToInt32(sqlHelper.ExecuteScalar(insertSql + " SELECT @@IDENTITY", CommandType.Text).ToString());
}
catch (Exception)
{
throw;
}
}
///
/// 批量保存用户信息
///
///
///
public int SaveBatchUserForm(string parentId, string data)
{
try
{
JObject jObj = Json.ToJObject(data);
int roomBeginNo = Convert.ToInt32(jObj["RoomBeginNo"].ToString());
int roomNum = Convert.ToInt32(jObj["RoomNum"].ToString());
string roomExtName = jObj["RoomExtName"].ToString();
for (int i = 0; i < roomNum; i++)
{
//修改为同一楼宇 单元名字不能重复
StringBuilder searchSql = new StringBuilder(" select count(1) from RMRS_RoomInfo where RoomNo = ").Append("'" + (roomBeginNo + i).ToString() + "' And ApmtID = " + parentId);
if (Convert.ToInt32(sqlHelper.ExecuteScalar(searchSql.ToString(), CommandType.Text, null)) > 0)
{
continue;
}
StringBuilder sb = new StringBuilder(" insert into RMRS_RoomInfo ( ApmtID, RoomNo, RoomName ) values ( ")
.Append(parentId + ", ")
.Append("'" + (roomBeginNo + i) + roomExtName + "', ")
.Append("'" + (roomBeginNo + i).ToString() + "')");
sqlHelper.ExecuteNoParams(sb.ToString(), CommandType.Text);
}
return 1;
}
catch (Exception)
{
throw;
}
}
#endregion
#region 获取用户信息
///
/// 获取单元信息
///
///
///
public NBUserEntity GetUserInfo(string id)
{
StringBuilder sb = new StringBuilder(" select * from RMRS_RoomInfo where RoomID = ").Append(id);
try
{
DataTable dt = sqlHelper.ExecuteDataTable(sb.ToString(), CommandType.Text, null);
if (dt.Rows.Count > 0)
{
return DataHelper.DataTableToT(dt)[0];
}
else
{
return null;
}
}
catch (Exception)
{
return null;
}
}
#endregion
#region 修改用户信息
///
/// 修改单元信息
///
///
///
///
public int EditUserForm(string parentId, string id, string data)
{
try
{
NBUserEntity entity = data.ToObject();
string updateSql = DataHelper.ModelToUpdateSql(entity, "RMRS_RoomInfo");
return sqlHelper.ExecuteNoParams(updateSql.ToString(), CommandType.Text) > 0 ? 1 : 0;
}
catch (Exception)
{
throw;
}
}
#endregion
#region 删除用户信息
///
/// 删除用户信息
///
///
///
public int DeleteUserForm(string id)
{
try
{
//删除用户的时候 同步删除表
string selUserMeter = "SELECT * FROM RMRS_MeterInfo WHERE RoomID = " + id;
DataTable dtMeter = sqlHelper.ExecuteDataTable(selUserMeter, CommandType.Text, null);
string meterId = "";
for (int row = 0; row < dtMeter.Rows.Count; row++)
{
meterId = dtMeter.Rows[row]["MeterID"].ToString();
DeleteMeterForm(meterId);
}
StringBuilder sb = new StringBuilder("delete from RMRS_RoomInfo where RoomID = ").Append(id);
return sqlHelper.ExecuteNoParams(sb.ToString(), CommandType.Text) > 0 ? 1 : 0;
}
catch (Exception)
{
throw;
}
}
#endregion
#region 添加用户时,先添加用户,再获得用户ID
///
///获得用户ID
///
/// 用户
/// 单元ID
/// 楼宇ID
/// 小区ID
///
public string GetRoomID(string RoomNo, string ApmtID, string BldgID, string AreaID)
{
string sql = @"select room.* from RMRS_RoomInfo room
left join RMRS_ApmtInfo apmt on room.ApmtID=apmt.ApmtID
left join RMRS_BldgInfo bldg on apmt.BldgID=bldg.BldgID
left join RMRS_AreaInfo area on bldg.AreaID=area.AreaID
where room.RoomNo='" + RoomNo + @"'
and apmt.ApmtID=" + ApmtID + @"
and bldg.BldgID=" + BldgID + @"
and area.AreaID=" + AreaID;
DataTable dt = sqlHelper.ExecuteDataTable(sql, CommandType.Text, null);
string roomid = dt.Rows[0]["RoomID"].ToString();
return roomid;
}
#endregion
#region 保存表具信息
///
/// 保存用户信息
///
///
///
public int SaveMeterForm(string parentId, string data)
{
try
{
NBMeterEntity entity = data.ToObject();
entity.RoomID = Convert.ToInt32(parentId);
NBUserEntity userEntity = GetUserInfo(parentId.ToString());
entity.ApmtID = Convert.ToInt32(userEntity.ApmtID);
ApmtInfoEntity apmtInfoEntity = GetApmtInfo(userEntity.ApmtID);
entity.BldgID = Convert.ToInt32(apmtInfoEntity.BldgID);
BldgInfoEntity bldgInfoEntity = GetBldgInfo(apmtInfoEntity.BldgID);
entity.AreaID = Convert.ToInt32(bldgInfoEntity.AreaID);
string insertSql = DataHelper.ModelToInsertSql(entity, "RMRS_MeterInfo");
object meterId = sqlHelper.ExecuteScalar(insertSql + " SELECT @@identity ", CommandType.Text, null);//获取新插入数据的ID
//华为平台注册
JObject jObj = NBCommon.RegisterMeter(entity.IMEI, "0");
//注册成功
if (jObj["deviceId"] != null)
{
string deviceId = jObj["deviceId"].ToString();
//同步数据库
string updateSql = "UPDATE RMRS_MeterInfo SET IOT_Code = '" + deviceId + "', SyncMark = 1 where MeterID = " + meterId.ToString();
sqlHelper.ExecuteNoParams(updateSql, CommandType.Text);
string selSql = "SELECT * FROM dbo.V_WaterMeters WHERE IOT_Code='" + deviceId + "'";
DataTable dtMeter = sqlHelper.ExecuteDataTable(selSql, CommandType.Text, null);
string protocolType = dtMeter.Rows[0]["MeterTypeName"].ToString();//协议类型
string deviceType = dtMeter.Rows[0]["NBDevTypeName"].ToString();
string manufacturerId = dtMeter.Rows[0]["NBDevManufacturerName"].ToString();
string manufacturerName = dtMeter.Rows[0]["NBDevManufacturerCodeName"].ToString();
string model = dtMeter.Rows[0]["NBTypeCodeName"].ToString();
//平台基础信息修改 Device Type,Manufacturer ID,Manufacturer Name,Model,Protocol Type,region,organization,timezone
//TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
//string totalSeconds = ts.TotalSeconds.ToString().Split('.')[0];
NBCommon.UpdateMeterParams(deviceId, entity.ElecAddress, deviceType, manufacturerId, manufacturerName, model, protocolType, "WWKJ_" + entity.ElecAddress);
return 0;
}
//平台设备已经存在
else if (jObj["error_code"] != null && jObj["error_code"].ToString() == "200")
{
//查找 IMEI 在本地存储的IOT_CODE 有的话 执行删除操作
return 2;
}
//获取失败
if (jObj["error_code"] != null)
{
log.Error(jObj.ToString() + " time:" + DateTime.Now);
}
return 0;
}
catch (Exception ex)
{
log.Error(ex.Message + " time:" + DateTime.Now);
return 1;
}
}
#endregion
#region 编辑表具信息
///
/// 保存用户信息
///
///
///
public int EditMeterForm(string meterId, string data)
{
try
{
NBMeterEntity oldEntity = GetMeterByMeterId(meterId);
NBMeterEntity entity = data.ToObject();
entity.RoomID = oldEntity.RoomID;
entity.ApmtID = oldEntity.ApmtID;
entity.BldgID = oldEntity.BldgID;
entity.AreaID = oldEntity.AreaID;
entity.MeterID = int.Parse(meterId);
string updateSql = DataHelper.ModelToUpdateSql(entity, "RMRS_MeterInfo");
sqlHelper.ExecuteNonQuery(updateSql, CommandType.Text, null);
string deviceId = oldEntity.IOT_Code;
//同步数据库
string selSql = "SELECT * FROM dbo.V_WaterMeters WHERE IOT_Code='" + deviceId + "'";
DataTable dtMeter = sqlHelper.ExecuteDataTable(selSql, CommandType.Text, null);
string protocolType = dtMeter.Rows[0]["MeterTypeName"].ToString();//协议类型
string deviceType = dtMeter.Rows[0]["NBDevTypeName"].ToString();
string manufacturerId = dtMeter.Rows[0]["NBDevManufacturerName"].ToString();
string manufacturerName = dtMeter.Rows[0]["NBDevManufacturerCodeName"].ToString();
string model = dtMeter.Rows[0]["NBTypeCodeName"].ToString();
//平台基础信息修改 Device Type,Manufacturer ID,Manufacturer Name,Model,Protocol Type,region,organization,timezone
TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
string totalSeconds = ts.TotalSeconds.ToString().Split('.')[0];
NBCommon.UpdateMeterParams(deviceId, entity.ElecAddress, deviceType, manufacturerId, manufacturerName, model, protocolType, "WWKJ_" + entity.ElecAddress);
return 0;
}
catch (Exception ex)
{
log.Error(ex.Message + " time:" + DateTime.Now);
return 1;
}
}
#endregion
#region 获取表具信息
///
/// 保存用户信息
///
///
///
public NBMeterEntity GetMeterByMeterId(string meterId)
{
try
{
string selSql = "SELECT * FROM RMRS_MeterInfo WHERE MeterID = " + meterId;
DataTable dtResult = sqlHelper.ExecuteDataTable(selSql, CommandType.Text, null);
List lists = DataHelper.DataTableToT(dtResult);
if (lists != null)
{
return lists[0];
}
return null;
}
catch (Exception ex)
{
return null;
}
}
#endregion
#region 删除表具信息
///
/// 删除表具信息
///
///
///
public int DeleteMeterForm(string meterId)
{
try
{
NBMeterEntity entity = GetMeterByMeterId(meterId);
string iot_code = entity.IOT_Code;
//string delSql = "DELETE FROM RMRS_MeterInfo WHERE MeterID=" + meterId;
string delSql = "UPDATE RMRS_MeterInfo SET DeleteMark=1 WHERE MeterID=" + meterId;
sqlHelper.ExecuteNoParams(delSql, CommandType.Text);
//表具删除 同步的历史数据删除
//string delHisSql = "DELETE FROM RMRS_HistoryRecord WHERE MeterID=" + meterId;
//sqlHelper.ExecuteNoParams(delHisSql, CommandType.Text);
//同步表 弃用 改为 回调模式
//string delHisTaskSql = "DELETE FROM RMRS_HistoryTask WHERE IOT_Code='" + iot_code + "'";
//sqlHelper.ExecuteNoParams(delHisTaskSql, CommandType.Text);
NBCommon.DeleteMeter(iot_code);
return 1;
}
catch (Exception ex)
{
return 0;
}
}
#endregion
}
}