/// <summary> /// 得到最新的一次流转记录 /// 根据EPCID得到 /// </summary> /// <param name="strEpcId">根据EPCID</param> /// <returns></returns> public string Get(string strEpcId) { try { using (NHibernate.ISession session = YnDaoHelper.GetInstance().nHibernateHelper.GetCurrentSession()) { if (session.IsOpen) { NHibernate.IQuery query = session.CreateQuery("from AscmTagLog where readTime in (select to_char(max(to_date(readTime,'yyyy-MM-dd HH24:mi:ss')),'yyyy-MM-dd HH24:mi:ss') from AscmTagLog where epcId='" + strEpcId + "' ) and epcId='" + strEpcId + "' "); AscmTagLog ascmTagLog = query.UniqueResult <AscmTagLog>(); if (ascmTagLog != null) { object obj = YnDaoHelper.GetInstance().nHibernateHelper.GetObject("select address from AscmReadingHead where id=" + ascmTagLog.readingHeadId + ""); ascmTagLog.place = obj.ToString(); return (YnBaseClass2.Helper.ObjectHelper.Serialize <AscmTagLog>(ascmTagLog)); } else { return(null); } } } } catch (Exception ex) { YnBaseClass2.Helper.LogHelper.GetLog().Error("查询失败(Get AscmContainer)", ex); throw ex; } return(null); }
/// <summary> /// Save /// </summary> /// <param name="Epc">EPC</param> /// <param name="ReadHeadId">读头ID</param> public void AscmTagLogSave(string Epc, int ReadHeadId, string sessionKey = null) { try { using (ITransaction tx = YnDaoHelper.GetInstance().nHibernateHelper.GetCurrentSession(sessionKey).BeginTransaction()) { try { //有没有该标签的信息 object objType = YnDaoHelper.GetInstance().nHibernateHelper.GetObject("select bindType from AscmRfid where epcId='" + Epc + "'", sessionKey); if (objType != null) { object obj = YnDaoHelper.GetInstance().nHibernateHelper.GetObject("select id from AscmTagLog where readingHeadId=" + ReadHeadId + " and epcId='" + Epc + "' and readTime=(select max(readTime) from AscmTagLog where epcId='" + Epc + "')", sessionKey); //说明有,要新增 if (obj != null) { AscmTagLog ascmTagLog = YnDaoHelper.GetInstance().nHibernateHelper.Get <AscmTagLog>(Convert.ToInt32(obj.ToString()), sessionKey); ascmTagLog.createTime = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); ascmTagLog.readTime = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); YnDaoHelper.GetInstance().nHibernateHelper.Update <AscmTagLog>(ascmTagLog, sessionKey); } else { //object objId=YnDaoHelper.GetInstance().nHibernateHelper.GetObject("select max(id) from AscmTagLog", sessionKey); //int id=0; //if (objId != null) //{ // id = (int)objId; //} AscmTagLog ascmTagLog = new AscmTagLog(); // ascmTagLog.id = ++id; ascmTagLog.readingHeadId = ReadHeadId; ascmTagLog.createTime = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); ascmTagLog.readTime = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); ascmTagLog.epcId = Epc; ascmTagLog.bindType = objType.ToString(); YnDaoHelper.GetInstance().nHibernateHelper.Save <AscmTagLog>(ascmTagLog, sessionKey); // tx.Commit();//正确执行提交 if (AscmTagLog.BindTypeDefine.container == objType.ToString() && MideaAscm.Services.ContainerManage.AscmContainerInfoService.GetInstance().GetByEpcId(Epc, sessionKey) != null) { MideaAscm.Dal.SupplierPreparation.Entities.AscmContainer ascmContainer = MideaAscm.Services.ContainerManage.AscmContainerInfoService.GetInstance().GetByEpcId(Epc, sessionKey); ascmContainer.place = ReadHeadId.ToString(); YnDaoHelper.GetInstance().nHibernateHelper.Update <MideaAscm.Dal.SupplierPreparation.Entities.AscmContainer>(ascmContainer, sessionKey); // MideaAscm.Services.ContainerManage.AscmContainerInfoService.GetInstance().Update(ascmContainer, sessionKey); } tx.Commit();//正确执行提交 } } } catch (Exception ex) { tx.Rollback();//回滚 throw ex; } } } catch (Exception ex) { YnBaseClass2.Helper.LogHelper.GetLog().Error("保存失败(Save ascmStoreInOut)", ex); throw ex; } }
/// <summary> /// 导出数据 /// </summary> /// <param name="queryWord"></param> /// <returns></returns> public List <AscmTagLog> GetFlowInfo(string queryWord) { List <AscmTagLog> list = null; try { string sort = " order by createTime desc"; string strHql = "from AscmTagLog"; if (!string.IsNullOrEmpty(queryWord)) { strHql += " where " + queryWord; } IList <AscmTagLog> ilist = YnDaoHelper.GetInstance().nHibernateHelper.Find <AscmTagLog>(strHql + sort); IList <MideaAscm.Dal.Base.Entities.AscmReadingHead> ilistAdress = YnDaoHelper.GetInstance().nHibernateHelper.Find <MideaAscm.Dal.Base.Entities.AscmReadingHead>("from AscmReadingHead where ip!='0.0.0.0'"); List <MideaAscm.Dal.Base.Entities.AscmReadingHead> listAdress = YnBaseClass2.Helper.ConvertHelper.ConvertIListToList <MideaAscm.Dal.Base.Entities.AscmReadingHead>(ilistAdress); string flowString = ""; AscmTagLog astddd = new AscmTagLog(); int count = 0; if (ilist != null && ilist.Count > 0) { list = YnBaseClass2.Helper.ConvertHelper.ConvertIListToList <AscmTagLog>(ilist); var q = (from a in ilist select a.epcId).Distinct(); foreach (var t in q) { var find = list.FindAll(e => e.epcId == t); if (find.Count > 1) { foreach (AscmTagLog AscmTagLog in find) { count++; var result = listAdress.Find(e => e.id == AscmTagLog.readingHeadId); if (count != find.Count) { if (result == null) { flowString += AscmTagLog.createTime + " " + Environment.NewLine; } else { flowString += AscmTagLog.createTime + " " + result.address + Environment.NewLine; } list.Remove(AscmTagLog); } else { if (result == null) { flowString += AscmTagLog.createTime + " "; } else { flowString += AscmTagLog.createTime + " " + result.address; } AscmTagLog.place = flowString; } } } else { var result = listAdress.Find(e => e.id == find[0].readingHeadId); if (result == null) { flowString = find[0].createTime; } else { flowString = find[0].createTime + " " + result.address; } find[0].place = flowString; } flowString = ""; } } if (ilist != null && ilist.Count > 0) { SetObjectId(list); //设置物件的ID SetSupplier(list); //设置物件的供应商 // SetAscmReadingHead(list); //设置地址 } } catch (Exception ex) { YnBaseClass2.Helper.LogHelper.GetLog().Error("查询失败(Find AscmTagLog)", ex); throw ex; } return(list); }