/// <summary> /// 增加一条数据 /// </summary> public bool Add(SqliteHelper.Model.ChangeLog model) { StringBuilder strSql = new StringBuilder(); strSql.Append("insert into ChangeLog("); strSql.Append("CabinetNo,AssetNo,CreateTime,OperationType,OperationDetail)"); strSql.Append(" values ("); strSql.Append("@CabinetNo,@AssetNo,@CreateTime,@OperationType,@OperationDetail)"); SQLiteParameter[] parameters = { new SQLiteParameter("@CabinetNo", DbType.Int32, 4), new SQLiteParameter("@AssetNo", DbType.Int32, 4), new SQLiteParameter("@CreateTime", DbType.DateTime), new SQLiteParameter("@OperationType", DbType.String, 50), new SQLiteParameter("@OperationDetail", DbType.String, 50) }; parameters[0].Value = model.CabinetNo; parameters[1].Value = model.AssetNo; parameters[2].Value = model.CreateTime; parameters[3].Value = model.OperationType; parameters[4].Value = model.OperationDetail; int rows = SQLiteHelper.ExecuteNonQuery(strSql.ToString(), parameters); if (rows > 0) { return(true); } else { return(false); } }
/// <summary> /// 得到一个对象实体 /// </summary> public SqliteHelper.Model.ChangeLog DataRowToModel(DataRow row) { SqliteHelper.Model.ChangeLog model = new SqliteHelper.Model.ChangeLog(); if (row != null) { //model.OrderNo=row["OrderNo"].ToString(); if (row["CabinetNo"] != null && row["CabinetNo"].ToString() != "") { model.CabinetNo = int.Parse(row["CabinetNo"].ToString()); } if (row["AssetNo"] != null && row["AssetNo"].ToString() != "") { model.AssetNo = int.Parse(row["AssetNo"].ToString()); } if (row["CreateTime"] != null && row["CreateTime"].ToString() != "") { model.CreateTime = DateTime.Parse(row["CreateTime"].ToString()); } if (row["OperationType"] != null) { model.OperationType = row["OperationType"].ToString(); } if (row["OperationDetail"] != null) { model.OperationDetail = row["OperationDetail"].ToString(); } } return(model); }
/// <summary> /// 预占资产 /// </summary> /// <returns></returns> public ActionResult PreholdAsset() { string dbpath = HttpContext.Server.MapPath("~/App_Data/DB/demo.db"); string orderNo = Request.QueryString["OrderNo"]; string cabinetNo = Request.QueryString["CabinetNo"]; string layerCount = Request.QueryString["CabinetLayer"]; SqliteHelper.BLL.Cabinet cabintbll = new SqliteHelper.BLL.Cabinet(dbpath); SqliteHelper.BLL.Asset assetbll = new SqliteHelper.BLL.Asset(dbpath); //获取待预占的资产 var assetModel = assetbll.GetModel(int.Parse(orderNo)); var assetListOfCabinet = assetbll.GetModelList(string.Format("CabinetNo='{0}' and State in ('1','2')", cabinetNo)); assetModel.State = "1"; assetModel.StartLayer = int.Parse(layerCount); assetbll.Update(assetModel); //预占完了之后,插入一条changelog SqliteHelper.BLL.ChangeLog changelogBll = new SqliteHelper.BLL.ChangeLog(dbpath); var model = new SqliteHelper.Model.ChangeLog(); model.AssetNo = assetModel.OrderNo; model.CabinetNo = 1; model.CreateTime = DateTime.Now; model.OperationDetail = string.Format("{0},{1}预占到第{2}U", assetModel.Type, assetModel.BM, layerCount); model.OperationType = "1"; changelogBll.Add(model); return(Content("1")); }
/// <summary> /// 更新一条数据 /// </summary> public bool Update(SqliteHelper.Model.ChangeLog model) { StringBuilder strSql = new StringBuilder(); strSql.Append("update ChangeLog set "); strSql.Append("CabinetNo=@CabinetNo,"); strSql.Append("AssetNo=@AssetNo,"); strSql.Append("CreateTime=@CreateTime,"); strSql.Append("OperationType=@OperationType,"); strSql.Append("OperationDetail=@OperationDetail"); strSql.Append(" where OrderNo=@OrderNo "); SQLiteParameter[] parameters = { new SQLiteParameter("@CabinetNo", DbType.Int32, 4), new SQLiteParameter("@AssetNo", DbType.Int32, 4), new SQLiteParameter("@CreateTime", DbType.DateTime), new SQLiteParameter("@OperationType", DbType.String, 50), new SQLiteParameter("@OperationDetail", DbType.String, 50), new SQLiteParameter("@OrderNo", DbType.Int32, 4) }; parameters[0].Value = model.CabinetNo; parameters[1].Value = model.AssetNo; parameters[2].Value = model.CreateTime; parameters[3].Value = model.OperationType; parameters[4].Value = model.OperationDetail; parameters[5].Value = model.OrderNo; int rows = SQLiteHelper.ExecuteNonQuery(strSql.ToString(), parameters); if (rows > 0) { return(true); } else { return(false); } }
/// <summary> /// 下架资产 /// </summary> /// <returns></returns> public ActionResult OffLineAsset() { string dbpath = HttpContext.Server.MapPath("~/App_Data/DB/demo.db"); string orderNo = Request.QueryString["OrderNo"]; SqliteHelper.BLL.Asset assetbll = new SqliteHelper.BLL.Asset(dbpath); //获取待预占的资产 var assetModel = assetbll.GetModel(int.Parse(orderNo)); assetModel.State = "0"; assetbll.Update(assetModel); //下架成功后,插入一条上架ChangeLog SqliteHelper.BLL.ChangeLog changelogBll = new SqliteHelper.BLL.ChangeLog(dbpath); var model = new SqliteHelper.Model.ChangeLog(); model.AssetNo = assetModel.OrderNo; model.CabinetNo = 1; model.CreateTime = DateTime.Now; model.OperationDetail = string.Format("{0},{1}从第{2}U下架", assetModel.Type, assetModel.BM, assetModel.StartLayer); model.OperationType = "3"; changelogBll.Add(model); return(Content("1")); }
/// <summary> /// 得到一个对象实体 /// </summary> public SqliteHelper.Model.ChangeLog GetModel(int OrderNo) { StringBuilder strSql = new StringBuilder(); strSql.Append("select OrderNo,CabinetNo,AssetNo,CreateTime,OperationType,OperationDetail from ChangeLog "); strSql.Append(" where OrderNo=@OrderNo "); SQLiteParameter[] parameters = { new SQLiteParameter("@OrderNo", DbType.Int32, 4) }; parameters[0].Value = OrderNo; SqliteHelper.Model.ChangeLog model = new SqliteHelper.Model.ChangeLog(); DataTable dt = SQLiteHelper.ExecuteDataTable(strSql.ToString(), parameters); if (dt.Rows.Count > 0) { return(DataRowToModel(dt.Rows[0])); } else { return(null); } }
/// <summary> /// 获取机柜内的资产列表 /// </summary> /// <returns></returns> public ActionResult GetCabinetAssetInfo() { //if ((DateTime.Now - lastDatetime).TotalSeconds < 2) //{ // return Content("-1"); //} //lastDatetime = DateTime.Now; string dbpath = HttpContext.Server.MapPath("~/App_Data/DB/demo.db"); NLog.LogManager.GetCurrentClassLogger().Debug(dbpath); string cabinetNo = Request.QueryString["CabinetNo"]; SqliteHelper.BLL.Asset assetbll = new SqliteHelper.BLL.Asset(dbpath); var assetList = assetbll.GetModelList(string.Format("CabinetNo='{0}' and State in ('1','2')", cabinetNo)); var assetAll = assetbll.GetModelList("1=1"); SqliteHelper.BLL.RealTimeData realDataBll = new SqliteHelper.BLL.RealTimeData(dbpath); var realTimeData = realDataBll.GetModelList(string.Format("cabinetNo='1'")); foreach (var asset in assetList) { //遍历每个资产,判断资产状态 if (asset.State == "1") { var list = realTimeData.Find(m => m.RFID == asset.RfidId && m.LayerIndex == asset.StartLayer); if (list == null) { //如果资产是已预占,且没有检测到信息 asset.CabinetState = "预占"; } else { //如果资产是已预占,检测到信息 asset.CabinetState = "在架"; //预占的资产,如果上架了,自动变为已上架 asset.State = "2"; assetbll.Update(asset); //上架成功后,插入一条上架ChangeLog var dtime = DateTime.Now; SqliteHelper.BLL.ChangeLog changelogBll = new SqliteHelper.BLL.ChangeLog(dbpath); var model = new SqliteHelper.Model.ChangeLog(); model.AssetNo = asset.OrderNo; model.CabinetNo = 1; model.CreateTime = dtime; model.OperationDetail = string.Format("{0},{1}上架到第{2}U", asset.Type, asset.BM, asset.StartLayer); model.OperationType = "2"; var datalist = changelogBll.GetModelList(string.Format("CreateTime>='{0}' and CreateTime<'{1}' and cabinetNo='1' and AssetNo='{2}' and OperationType='2'", dtime.AddSeconds(-1).ToString("yyyy-MM-dd HH:mm:ss"), dtime.AddSeconds(1).ToString("yyyy-MM-dd HH:mm:ss"), model.AssetNo)); if (datalist.Count == 0) { changelogBll.Add(model); } } } else if (asset.State == "2") { var list = realTimeData.Find(m => m.RFID == asset.RfidId && m.LayerIndex == asset.StartLayer); if (list == null) { //如果资产是已预占,且没有检测到信息 asset.CabinetState = "遗失"; } else { //如果资产是已预占,检测到信息 asset.CabinetState = "在架"; } } } foreach (var realItem in realTimeData) { var asset = assetList.Find(m => m.StartLayer == realItem.LayerIndex); //如果当前层位没有资产, if (asset == null) { var otherAsset = assetAll.Find(m => m.RfidId == realItem.RFID); otherAsset.CabinetState = "非法"; otherAsset.StartLayer = realItem.LayerIndex; assetList.Add(otherAsset); } else { if (asset.RfidId != realItem.RFID) { assetList.Remove(asset);//移除机柜内该层位的资产,显示非法的资产优先级高 var otherAsset = assetAll.Find(m => m.RfidId == realItem.RFID); otherAsset.CabinetState = "非法"; otherAsset.StartLayer = realItem.LayerIndex; assetList.Add(otherAsset); } } } //从RealData中获取 JsonResult js = Json(assetList, JsonRequestBehavior.AllowGet); return(js); }