/// <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; }