/// <summary> /// Print various reports /// </summary> /// <param name="type">Report to print</param> /// <param name="options">Options in JSON string format</param> /// <param name="options.baxiArgs">TransferAmount arguments in JSON string format</param> /// <returns>JSON payload sent to the terminal</returns> public string PrintReport(string type, string options = "{}") { var opts = JsonConvert.DeserializeObject <OperationOptions>(options); Operation <AdministrationArgs> op = null; switch (type.ToUpper()) { case "Z": op = new ZReport(baxiArgs: opts.baxiArgs); break; case "X": op = new XReport(baxiArgs: opts.baxiArgs); break; case "EOT": op = new EOTReport(baxiArgs: opts.baxiArgs); break; case "LATEST": case "TRANSACTION": case "LATESTTRANSACTION": op = new LatestTransactionReport(baxiArgs: opts.baxiArgs); break; default: throw new NotImplementedException(string.Format("Report of type {0} is not supported.", type)); } Debug.WriteLine("Generating report of type {0}...", type); terminalCtrl.SendAdminOperation(op); return(JsonConvert.SerializeObject(op.Args)); }
internal void RegisterNewItem(ClientXObject <TKind> _child, Guid _collectionOwnerUid, int _fieldId) { var ownerDescriptor = GetDescriptor(_collectionOwnerUid); ClientXObjectDescriptor <TKind> childDescriptor; if (m_descriptors.TryGetValue(_child.Uid, out childDescriptor)) { if (!childDescriptor.CollectionOwnerUid.Equals(_collectionOwnerUid)) { throw new ApplicationException("Object owned by another parent"); } ProcessAddedToCollection(_child, ownerDescriptor, _fieldId); return; //throw new ApplicationException("Object is not unique"); } var kindId = KindToInt(_child.Kind); var report = new XReport(_child.Uid, _child.GetChanges(), kindId, EState.SINGLE); m_transport.AddNew(report, m_sessionId, _collectionOwnerUid); var descriptor = new ClientXObjectDescriptor <TKind>(_child, this, kindId, _collectionOwnerUid); m_descriptors.Add(_child.Uid, descriptor); ProcessAddedToCollection(_child, ownerDescriptor, _fieldId); _child.SetClientInternal(this); _child.OnInstantiationFinished(); }
internal void ApplyChanges(XReport _report, bool _firstTime) { if (_firstTime) { UnsubscribePersistedValuesChanges(); } var done = new List <IXValueInternal>(); foreach (var item in _report.Items.OrderBy(_item => _item.State)) { if (Kind.ToString() == "ALL") { } IXValueInternal value; if (m_xValues.TryGetValue(item.FieldId, out value)) { value.ApplyChanges(item, _firstTime); done.Add(value); } } if (_firstTime) { SubscribePersistedValuesChanges(); m_isDirty = null; } foreach (var xValue in m_xValues.Values.Except(done)) { xValue.Revert(); } }
public void Serialize() { var cl = new TstClient(); var a = cl.GetRoot <Root>().AItems.First(); a.Value = 10; var report = new XReport(a.Uid, a.GetChanges(), (int)a.Kind, EState.SINGLE); var ser = new DataContractSerializer(typeof(XReport) //, new Type[] { typeof(XReportItem<Int32>)} ); var sb = new StringBuilder(); using (var writer = XmlWriter.Create(sb, new XmlWriterSettings { OmitXmlDeclaration = true })) { ser.WriteObject(writer, report); } var xml = sb.ToString(); var resultSerializer = new DataContractSerializer(typeof(XReport) //, new Type[] { typeof(XReportItem<Int32>) } ); XReport deserializedReport; var stream = new MemoryStream(Encoding.UTF8.GetBytes(xml)); { deserializedReport = (XReport)resultSerializer.ReadObject(stream); } var reportHC = report; var deserializedHC = deserializedReport.GetHashCode(); Assert.AreEqual(report.Uid, deserializedReport.Uid); }
///// <summary> ///// ///// </summary> ///// <param name="templateFile">报表文件</param> ///// <param name="ds">数据集</param> //public ReportDesign(string templateFile, DataSet ds, XRDesignFormExBase form) //{ // _templateSource = ds; // _templateStr = templateFile; // m_frm = form; // Design(); //} #region FormDataSoruce //private DataTable m_ReportDataSoruce = new DataTable(); //private string m_Path = string.Empty; //private void m_frm_Load(object sender, EventArgs e) //{ // m_frm.Visible = true; // FormDataSoruce formSoruce = new FormDataSoruce(); // if (formSoruce.ShowDialog() == DialogResult.OK) // { // m_ReportDataSoruce = formSoruce.ReportDataSoruce.Copy(); // m_Path = formSoruce.Path; // DataSet ds = new DataSet(); // ds.Tables.Add(m_ReportDataSoruce); // m_frm.Visible = true; // ReportDesign rp = new ReportDesign(m_Path, ds); // rp.Design(); // } // else // { // m_frm.Close(); // } //} //#endregion #endregion /// <summary> /// 给出设计界面 /// </summary> public void Design() { //初始化报表设计界面 if (m_FromStream) { _reportUtil = new XReport(_templateStr, _templateSource); } else { _reportUtil = new XReport(_templateSource, _templateStr); } if (m_frm == null) { m_frm = new CustomDesignForm(); m_frm.SkipQueryData = true; m_frm.WindowState = FormWindowState.Maximized; } if (AUTOSAVE) { m_frm.ReportStateChanged += new ReportStateEventHandler(m_frm_ReportStateChanged); m_frm.Closing += new System.ComponentModel.CancelEventHandler(m_frm_Closing); } m_frm.TextChanged += new EventHandler(m_frm_TextChanged); m_frm.FileName = _reportUtil.FileName; ReportUtil.DataSource = _templateSource; ReportUtil.DataSource.DataSetName = "ReportDesign"; m_frm.OpenReport(_reportUtil.CurrentReport); m_frm.ShowDialog(); }
internal bool Save(SessionId _sessionId, IStorage _storage, DateTime _now, AbstractXServer _abstractXServer) { List <XReport> reports; if (m_changes.TryGetValue(_sessionId, out reports) && m_currentVersion[_sessionId] >= 0) { var reverseItems = new List <AbstractXReportItem>(); var changes = reports[m_currentVersion[_sessionId]]; foreach (var item in changes.Items) { IServerXValue xValue; if (!m_xValues.TryGetValue(item.FieldId, out xValue)) { xValue = item.CreateXValue(); m_xValues.Add(item.FieldId, xValue); reverseItems.Add(item.CreateDefaultReportItem()); } else { reverseItems.Add(xValue.CreateReverseReportItem(item)); } int oldId; if (m_xValueOldIds.TryGetValue(item.FieldId, out oldId)) { m_xValueOldIds[item.FieldId] = xValue.SaveOriginalValue(Uid, item, _storage, oldId, _now, _abstractXServer); } else { m_xValueOldIds[item.FieldId] = xValue.SaveOriginalValue(Uid, item, _storage, null, _now, _abstractXServer); } } reports.Clear(); m_currentVersion[_sessionId] = -1; ValidFrom = _now; foreach (var pair in m_changes) { if (pair.Key == _sessionId) { continue; } var reverseReport = new XReport(changes.Uid, reverseItems, changes.Kind, EState.UNDO_ABLE | EState.REVERT_ABLE | (pair.Value.Any()?EState.REDO_ABLE : EState.SINGLE)) { ActualFrom = changes.ActualFrom }; foreach (var xReport in pair.Value) { xReport.UpdateAccordingNewValues(m_xValues, reverseReport); } pair.Value.Insert(0, reverseReport); m_currentVersion[pair.Key]++; } return(true); } return(false); }
internal uint AddNew(XReport _report, SessionId _sessionId, Guid _parentUid) { _report.ActualFrom = NextGeneration(); var obj = new ServerXObjectContainer(_report.Kind, _report.Uid); obj.FillFromClient(_report, _sessionId); m_objects.Add(_report.Uid, obj); return(_report.ActualFrom); }
private void btnPrint_Click(object sender, EventArgs e) { if (m_pageSouce == null) { return; } XReport xreport = new XReport(m_pageSouce.Copy(), @"ReportMedQCAnalysis.repx"); xreport.ShowPreview(); }
internal void ClientObjectChanged(XReport _xReport) { if (_xReport.Uid == RootDescriptor.Uid) { var toDel = _xReport.Items.Where(_item => m_abstractKinds.Contains(_item.FieldId)).ToArray(); foreach (var item in toDel) { _xReport.Items.Remove(item); } } m_transport.ClientObjectChanged(_xReport, m_sessionId); }
private void button2_Click(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; if (ds == null || ds.Tables.Count == 0) { button3_Click(sender, e); } XReport rp = new XReport(ds, textBox1.Text); rp.ShowPreview(); Cursor.Current = Cursors.Default; }
internal void GetAvailableRedoDate(SessionId _sessionId, AbstractXServer _server, ref uint _generation, ref List <Guid> _candidates) { XReport changes = null; int version; if (m_currentVersion.TryGetValue(_sessionId, out version)) { if (version < m_changes[_sessionId].Count) { if (version < m_changes[_sessionId].Count - 1) { changes = m_changes[_sessionId][version + 1]; var result = changes.ActualFrom; if (result < _generation) { _candidates.Clear(); _generation = result; } if (result == _generation) { _candidates.Add(Uid); } } else if (version >= 0) { changes = m_changes[_sessionId][version]; } } } var uids = new List <Guid>(); if (changes != null) { uids.AddRange( changes.Items.OfType <XReportList>().SelectMany(_list => _list.Items).Where( _item => _item.State == EReportListItemState.ADDED).Select(_item => _item.Uid)); } foreach (var pair in m_xValues) { var list = pair.Value as ServerXList; if (list == null) { continue; } uids.AddRange(list.GetGuids()); } foreach (var uid in uids) { _server.GetAvailableRedoDate(uid, _sessionId, _server, ref _generation, ref _candidates); } }
/// <summary> /// 打印事件 /// edit by Yanqiao.Cai 2012-11-13 /// 1、add try ... catch /// 2、添加提示 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnPrint_Click(object sender, EventArgs e) { try { if (m_pageSouce == null) { MessageBox.Show("请先查询数据"); return; } XReport xreport = new XReport(m_pageSouce.Copy(), @"ReportFail.repx"); xreport.ShowPreview(); } catch (Exception ex) { MyMessageBox.Show(1, ex); } }
internal void AddChanges(SessionId _sessionId, XReport _report) { List <XReport> list; if (!m_changes.TryGetValue(_sessionId, out list)) { list = new List <XReport>(); m_changes.Add(_sessionId, list); m_currentVersion.Add(_sessionId, 0); } else { var version = ++m_currentVersion[_sessionId]; if (version < list.Count) { list.RemoveRange(version, list.Count - version); } } list.Add(_report); }
public void MergeChanges(XReport _report) { State = EState.UNDO_ABLE | EState.REVERT_ABLE; foreach (var reportItem in _report.Items) { switch (reportItem.State) { case XReportItemState.CHANGE: var changeExists = Items.SingleOrDefault(_item => _item.FieldId == reportItem.FieldId && _item.State == XReportItemState.CHANGE); if (changeExists != null) { Items.Remove(changeExists); } Items.Add(reportItem); break; default: throw new ArgumentOutOfRangeException(); } } if (ActualFrom < _report.ActualFrom) { foreach (var reportItem in Items) { switch (reportItem.State) { case XReportItemState.CHANGE: var changeExists = _report.Items.SingleOrDefault(_item => _item.FieldId == reportItem.FieldId); // && _item.State == XReportItemState.CHANGE); if (changeExists == null) { _report.Items.Add(reportItem); } break; } } } }
private void XObjectChanged(IClientXObject <TKind> _xObject) { var xObject = ((ClientXObject <TKind>)_xObject); var changes = xObject.GetChanges().ToArray(); var xReport = new XReport(_xObject.Uid, changes, Kind, EState.UNDO_ABLE | EState.REVERT_ABLE); Report.MergeChanges(xReport); ResetState(); foreach (var obj in m_instances.Values) { if (!ReferenceEquals(obj, _xObject)) { obj.Changed -= XObjectChanged; obj.ApplyChanges(xReport, false); obj.Changed += XObjectChanged; } } m_client.ClientObjectChanged(xReport); }
internal ServerXReport GetReport(SessionId _sessionId, uint _actualFor) { var actualFrom = Stored; var lastModification = Stored; var items = new List <AbstractXReportItem>(); List <XReport> reports; XReport last = null; if (m_changes.TryGetValue(_sessionId, out reports)) { last = reports.LastOrDefault(_report => _report.ActualFrom <= _actualFor); if (last != null) { actualFrom = last.ActualFrom; } } else { m_changes.Add(_sessionId, new List <XReport>()); m_currentVersion.Add(_sessionId, -1); } foreach (var pair in m_xValues) { var xName = pair.Key; items.Add(pair.Value.GetOriginalValueReportItem(xName, _sessionId)); if (last != null) { items.AddRange(last.Items.Where(_item => _item.FieldId == xName)); } } var result = new ServerXReport(Uid, items, actualFrom, Kind, EState.SINGLE); return(result); }
private void button1_Click(object sender, EventArgs e) { SqlConnection cn = new System.Data.SqlClient.SqlConnection (@"Database=EMRNET;Server=192.168.2.202\two;user id=sa;password=sa"); // SqlConnection cn = new System.Data.SqlClient.SqlConnection // (@"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP) // (HOST=yidan-ser)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=yidanemr)));User Id=yidandba;Password=sa;"); SqlCommand cmd = new SqlCommand("select * from YY_ZGDMK", cn); // SqlCommand cmd = new SqlCommand(@" // select // d.noofinpat, // a.id,a.childname, // b.cname, // c.problem_desc as koufenliyou, // c.reducepoint as redpoint, // d.name as patname, // e.name as deptname, // f.name as indocname, // f1.name as updocname // from emr_configpoint a // join dict_catalog b on a.ccode=b.ccode // left join emr_point c on a.ccode=c.sortid // join inpatient d on d.noofinpat=c.noofinpat // left join department e on d.outhosdept=e.id // left join users f on d.resident=f.id // left join users f1 on f1.id=d.chief // where a.valid='1' and d.noofinpat='4724' ",cn); DataTable data = new DataTable(); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(data); string file = @"D:\YidanSoft.Net\OracleRun\users.repx"; XReport xreport = new XReport(data, file); xreport.ShowPreview(); }
internal void GetAvailableUndoDate(SessionId _sessionId, AbstractXServer _server, ref uint _dateTime, ref List <Guid> _candidates) { XReport changes = null; var result = Stored; int version; if (m_currentVersion.TryGetValue(_sessionId, out version)) { if (version >= 0) { changes = m_changes[_sessionId][version]; result = changes.ActualFrom; } if (result > _dateTime) { _candidates.Clear(); _dateTime = result; } if (result == _dateTime) { _candidates.Add(Uid); } } var uids = new List <Guid>(); if (changes != null) { uids.AddRange( changes.Items.OfType <XReportList>().SelectMany(_list => _list.Items).Where( _item => _item.State == EReportListItemState.ADDED).Select(_item => _item.Uid)); } foreach (var pair in m_xValues) { var list = pair.Value as ServerXList; if (list == null) { continue; } uids.AddRange(list.GetGuids()); if (changes != null) { var pairCopy = pair; var update = (XReportList)changes.Items.FirstOrDefault(_item => _item.FieldId == pairCopy.Key); if (update != null) { foreach (var item in update.Items) { switch (item.State) { case EReportListItemState.REMOVED: uids.Remove(item.Uid); break; } } } } } foreach (var uid in uids) { _server.GetAvailableUndoDate(uid, _sessionId, _server, ref _dateTime, ref _candidates); } }
internal void ClientObjectChanged(XReport _report, SessionId _sessionId) { _report.ActualFrom = NextGeneration(); m_objects[_report.Uid].AddChanges(_sessionId, _report); }
public void ClientObjectChanged(XReport _report, SessionId _sessionId) { ServiceContract.ClientObjectChanged(_report, _sessionId); }
public uint AddNew(XReport _xReport, SessionId _sessionId, Guid _parentUid) { return ServiceContract.AddNew(_xReport, _sessionId, _parentUid); }
public uint AddNew(XReport _xReport, SessionId _sessionId, Guid _parentUid) { return(ServiceContract.AddNew(_xReport, _sessionId, _parentUid)); }
internal void AddChanges(SessionId _sessionId, XReport _report) { List<XReport> list; if (!m_changes.TryGetValue(_sessionId, out list)) { list = new List<XReport>(); m_changes.Add(_sessionId, list); m_currentVersion.Add(_sessionId, 0); } else { var version = ++m_currentVersion[_sessionId]; if (version < list.Count) { list.RemoveRange(version, list.Count - version); } } list.Add(_report); }
internal bool Save(SessionId _sessionId, IStorage _storage, DateTime _now, AbstractXServer _abstractXServer) { List<XReport> reports; if (m_changes.TryGetValue(_sessionId, out reports) && m_currentVersion[_sessionId] >= 0) { var reverseItems = new List<AbstractXReportItem>(); var changes = reports[m_currentVersion[_sessionId]]; foreach (var item in changes.Items) { IServerXValue xValue; if (!m_xValues.TryGetValue(item.FieldId, out xValue)) { xValue = item.CreateXValue(); m_xValues.Add(item.FieldId, xValue); reverseItems.Add(item.CreateDefaultReportItem()); } else { reverseItems.Add(xValue.CreateReverseReportItem(item)); } int oldId; if (m_xValueOldIds.TryGetValue(item.FieldId, out oldId)) { m_xValueOldIds[item.FieldId] = xValue.SaveOriginalValue(Uid, item, _storage, oldId, _now, _abstractXServer); } else { m_xValueOldIds[item.FieldId] = xValue.SaveOriginalValue(Uid, item, _storage, null, _now, _abstractXServer); } } reports.Clear(); m_currentVersion[_sessionId] = -1; ValidFrom = _now; foreach (var pair in m_changes) { if (pair.Key == _sessionId) { continue; } var reverseReport = new XReport(changes.Uid, reverseItems, changes.Kind, EState.UNDO_ABLE | EState.REVERT_ABLE | (pair.Value.Any()?EState.REDO_ABLE : EState.SINGLE)) { ActualFrom = changes.ActualFrom }; foreach (var xReport in pair.Value) { xReport.UpdateAccordingNewValues(m_xValues, reverseReport); } pair.Value.Insert(0, reverseReport); m_currentVersion[pair.Key]++; } return true; } return false; }
internal void FillFromClient(XReport _xReport, SessionId _sessionId) { Uid = _xReport.Uid; AddChanges(_sessionId, _xReport); }
public uint AddNew(XReport _xReport, SessionId _sessionId, Guid _parentUid) { return(Implementation.AddNew(_xReport, _sessionId, _parentUid)); }
internal uint AddNew(XReport _report, SessionId _sessionId, Guid _parentUid) { _report.ActualFrom = NextGeneration(); var obj = new ServerXObjectContainer(_report.Kind, _report.Uid); obj.FillFromClient(_report, _sessionId); m_objects.Add(_report.Uid, obj); return _report.ActualFrom; }
public void ClientObjectChanged(XReport _report, SessionId _sessionId) { Implementation.ClientObjectChanged(_report, _sessionId); }