AIMS/AIMSControls/OperationAanesthesia/frmFactOutputLiquidsNew.cs
2023-08-16 22:32:16 +08:00

577 lines
24 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AIMSBLL;
using AIMSModel;
using DrawGraph;
using AIMSExtension;
using DevComponents.DotNetBar.Controls;
namespace AIMS.PublicUI.UI
{
public partial class frmFactOutputLiquidsNew : Form
{
public frmFactOutputLiquidsNew()
{
InitializeComponent();
}
/// <summary>
/// 手术记录
/// </summary>
public DrawGraph.OperationRecord _record;
/// <summary>
/// 图表控件
/// </summary>
public DrawGraph.ZedGraphControl zgcAnaesRecord;
/// <summary>
/// 出量集合
/// </summary>
public List<OutputLiquids> _outputList;
/// <summary>
/// 计量单位集合
/// </summary>
public List<BasicDictionary> _unitList;
public delegate void OutsParamHandler();
public event OutsParamHandler OutParam;
int LastColumnIndex = 0;// e.ColumnIndex
public int OutputLiquidTypeId;
private void frmFactOutputLiquidsNew_Load(object sender, EventArgs e)
{
for (int i = 0; i < dgvOutput.Columns.Count; i++)
{
dgvOutput.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
}
Initial();
dgvEvents_RowsAdded(null, null);
}
/// <summary>
/// 初始化公共成员
/// </summary>
private void Initial()
{
_unitList = BBasicDictionary.GetBasicDictionaryByName("给药单位").SubItem;
_outputList = BOutputLiquids.Select(" IsValid=1", null);
_unitList.Insert(0, new BasicDictionary() { Id = -1, Name = "" });
#region
foreach (OutputLiquids type in _outputList)
{
int index = this.dgvOutput.Rows.Add();
this.dgvOutput.Rows[index].Cells["OutputName"].Value = type.Name;
this.dgvOutput.Rows[index].Cells["OutputName"].Tag = type.Id;
this.dgvOutput.Rows[index].Cells["DoseUnit"].Value = "ml";
dgvOutput.CurrentCell = this.dgvOutput.Rows[index].Cells[2];
dgvOutput.BeginEdit(true);
if (index == 3) break;
}
#endregion
_outputList.Insert(0, new OutputLiquids() { Id = -1, Name = "" });
if (_record.FactOutputLiquidsList.Count > 0)
{
FullDGV(_record.FactOutputLiquidsList);
}
}
private void FullDGV(List<FactOutputLiquids> list)
{
//添加出量
if (list.Count > 0)
{
foreach (FactOutputLiquids item in list)
{
bool k = false;
foreach (DataGridViewRow row in dgvOutput.Rows)
{
OutputLiquids type = null;
if (row.Cells["OutputName"].Tag != null)
{
type = BOutputLiquids.SelectSingle(Convert.ToInt32(row.Cells["OutputName"].Tag));
}
if (type != null)
{
if (type.Id == item.OutputLiquidsId && row.Cells["Dose"].EditedFormattedValue.ToString() == "")
{
row.Tag = item.Id;
row.Cells["Dose"].Value = ((double)item.Dosage).ToString();
row.Cells["DoseUnit"].Value = item.DosageUnit;
if (Convert.ToDateTime(item.BeginTime).ToString().Length > 0)
{
row.Cells["BeginTime"].Value = item.BeginTime;
}
if (item.IsContinue > 0)
{
row.Cells["Continue"].Value = "-->";
}
if (Convert.ToDateTime(item.EndTime).ToString().Length > 0)
{
if (item.EndTime != item.BeginTime)
{
row.Cells["EndTime"].Value = item.EndTime;// Convert.ToDateTime(item.EndTime);
}
}
if (Convert.ToDateTime(item.EndTime).ToString().Length > 0 && item.EndTime > item.BeginTime)
{
row.Cells["Continue"].Value = "-->";
row.Cells["EndTime"].Value = item.EndTime;
}
row.Cells["Remark"].Value = item.Remark;
k = true;
break;
}
}
}
if (k) continue;
int index = this.dgvOutput.Rows.Add();
this.dgvOutput.Rows[index].Tag = item.Id;
this.dgvOutput.Rows[index].Cells["Remark"].Value = item.Remark;
this.dgvOutput.Rows[index].Cells["OutputName"].Value = item.OutputLiquidsName;
this.dgvOutput.Rows[index].Cells["OutputName"].Tag = item.OutputLiquidsId;
this.dgvOutput.Rows[index].Cells["Dose"].Value = (double)item.Dosage;
this.dgvOutput.Rows[index].Cells["DoseUnit"].Value = item.DosageUnit;
if (Convert.ToDateTime(item.BeginTime).ToString().Length > 0)
{
this.dgvOutput.Rows[index].Cells["BeginTime"].Value = item.BeginTime;
}
if (item.IsContinue > 0)
{
this.dgvOutput.Rows[index].Cells["Continue"].Value = "-->";
}
if (Convert.ToDateTime(item.EndTime).ToString().Length > 0)
{
if (item.EndTime != item.BeginTime)
{
this.dgvOutput.Rows[index].Cells["EndTime"].Value = item.EndTime;
}
}
}
}
}
private void dgvEvents_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
DataGridViewComboEditTipBoxCell nameCell;
DataGridViewComboBoxCell unitCell;
if (e == null)
{
nameCell = dgvOutput.Rows[dgvOutput.Rows.Count - 1].Cells["OutputName"] as DataGridViewComboEditTipBoxCell;
unitCell = dgvOutput.Rows[dgvOutput.Rows.Count - 1].Cells["DoseUnit"] as DataGridViewComboBoxCell;
}
else
{
nameCell = dgvOutput.Rows[e.RowIndex].Cells["OutputName"] as DataGridViewComboEditTipBoxCell;
unitCell = dgvOutput.Rows[e.RowIndex].Cells["DoseUnit"] as DataGridViewComboBoxCell;
}
foreach (var item in _outputList)
{
nameCell.Items.Add(item.Name);
}
unitCell.DataSource = _unitList;
unitCell.DisplayMember = "Name";
unitCell.ValueMember = "Name";
}
private void dgvOutput_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (dgvOutput.CurrentCell != null)
{
if (LastColumnIndex == 1 && dgvOutput.CurrentCell.ColumnIndex != 1)
{
if (dgvOutput.CurrentCell.ColumnIndex == 3)
{
dgvOutput.CurrentCell = dgvOutput.CurrentRow.Cells[2];
dgvOutput.BeginEdit(true);
}
}
LastColumnIndex = dgvOutput.CurrentCell.ColumnIndex;
//点击开始时间时显示时间
if (dgvOutput.CurrentCell.ColumnIndex == 4 && dgvOutput.CurrentCell.EditedFormattedValue.ToString() == "")
{
dgvOutput.CurrentCell.Value = DateTime.Now;
SendKeys.Send("{Tab}");
}
//点击Sign列时显示持续事件标记
if (dgvOutput.CurrentCell.ColumnIndex == 5)
{
if (dgvOutput.CurrentCell.EditedFormattedValue.ToString() == "" && dgvOutput.CurrentRow.Cells["BeginTime"].EditedFormattedValue.ToString() != "")
{
dgvOutput.CurrentCell.Value = "-->";
btnSave.Focus();
SendKeys.Send("{Tab}");
}
else
{
dgvOutput.CurrentCell.Value = "";
dgvOutput.CurrentRow.Cells["EndTime"].Value = "";
btnSave.Focus();
}
}
//点击结束时间时判断是否持续事件,并显示时间
if (dgvOutput.CurrentCell.ColumnIndex == 6)
{
if (dgvOutput.CurrentRow.Cells[5].EditedFormattedValue.ToString() != "" && dgvOutput.CurrentCell.EditedFormattedValue.ToString() == "")
{
dgvOutput.CurrentCell.Value = DateTime.Now;
btnSave.Focus();
//SendKeys.Send("{Tab}");
}
}
}
}
private bool ValidTimeTxt(string dgvTimeTxt, ref string message)
{
bool k = true;
if (dgvTimeTxt == "")
{
return k;
}
if (!dgvTimeTxt.Contains("-") || !dgvTimeTxt.Contains(":") || !dgvTimeTxt.Contains(" "))
{
return false;
}
if (dgvTimeTxt.IndexOf("-") < 1 || dgvTimeTxt.IndexOf(":") < 1 || dgvTimeTxt.IndexOf(" ") < 1)
{
return false;
}
try
{
string[] ym = dgvTimeTxt.Split(' ');
string[] sym = ym[0].Split('-');
string[] hm = ym[1].Split(':');
int month = Convert.ToInt16(sym[0]);
int day = Convert.ToInt16(sym[1]);
int hh = Convert.ToInt16(hm[0]);
int mm = Convert.ToInt16(hm[1]);
if (month > 12 || month < 0)
{
k = false;
message = "请填写正确的月份1-12";
}
if (day > 31 || day < 0)
{
k = false;
message = "请填写正确的日期1-31";
}
if (hh > 23 || hh < 0)
{
k = false;
message = "请填写正确的小时0-23";
}
if (mm > 59 || hh < 0)
{
k = false;
message = "请填写正确的小时0-59";
}
}
catch
{
k = false;
}
return k;
}
private void btnDelete_Click(object sender, EventArgs e)
{
if (dgvOutput.CurrentRow != null)
{
if (dgvOutput.CurrentRow.Tag != null)
{
int id = Convert.ToInt32(dgvOutput.CurrentRow.Tag);
FactOutputLiquids er = _record.FactOutputLiquidsList.Where(b => b.Id == id).ToList()[0];
//er.IsValid = 0;
BFactOutputLiquids.Delete(er);
er.clearAddObj(zgcAnaesRecord);
_record.FactOutputLiquidsList.Remove(er);
OutParam();
dgvOutput.Rows.Remove(dgvOutput.CurrentRow);
}
else
{
if (dgvOutput.CurrentRow.Cells["OutputName"].Value != null)
{
dgvOutput.Rows.Remove(dgvOutput.CurrentRow);
}
}
}
}
private void btnSave_Click(object sender, EventArgs e)
{
#region
foreach (DataGridViewRow dr in dgvOutput.Rows)
{
if (dr.Cells[1].EditedFormattedValue.ToString() != "" && dr.Cells[2].EditedFormattedValue.ToString() != "")
{
if (dr.Cells["DoseUnit"].EditedFormattedValue.ToString() == "")
{
MessageBox.Show("保存失败!\n\r" + "请输入:" + dr.Cells[0].EditedFormattedValue.ToString() + ":" + dr.Cells["OutputName"].EditedFormattedValue.ToString() + "的计量单位!");
dgvOutput.CurrentCell = dr.Cells["DoseUnit"];
dgvOutput.BeginEdit(true);
return;
}
}
}
#endregion
foreach (DataGridViewRow dr in dgvOutput.Rows)
{
if (dr.Cells["OutputName"].EditedFormattedValue.ToString() == "" || dr.Cells["Dose"].EditedFormattedValue.ToString() == "")
{
continue;
}
string OutputName = dr.Cells["OutputName"].EditedFormattedValue.ToString().Trim();
int outId = 0;
OutputLiquids OutputLiquidsRef = null;
OutputLiquidsRef = BOutputLiquids.SelectSingle(" Name='" + OutputName + "'", null, RecursiveType.None, 0);
if (OutputLiquidsRef == null)
{
OutputLiquidsRef = new OutputLiquids();
OutputLiquidsRef.Name = OutputName;
OutputLiquidsRef.HelpCode = PublicMethod.GetFirstLetter(OutputName);
OutputLiquidsRef.IsValid = 1;
OutputLiquidsRef.OperatorNo = PublicMethod.OperatorNo;
OutputLiquidsRef.OperateDate = DateTime.Now;
OutputLiquidsRef.Id = BOutputLiquids.Insert(OutputLiquidsRef);
}
outId = OutputLiquidsRef.Id.Value;
//实例化OutputLiquids对象
FactOutputLiquids liquids = new FactOutputLiquids();
liquids.OutputLiquidsName = OutputName;
liquids.PatientId = _record.PatientId.Value;
liquids.OutputLiquidsId = outId;
liquids.OutputLiquidsTypeId = OutputLiquidTypeId;
liquids.Dosage = Convert.ToDecimal(dr.Cells["Dose"].Value);
liquids.DosageUnit = dr.Cells["DoseUnit"].EditedFormattedValue.ToString();
if (dr.Cells["BeginTime"].EditedFormattedValue.ToString() != "")
{
liquids.BeginTime = Convert.ToDateTime(dr.Cells["BeginTime"].Value.ToString());
}
liquids.EndTime = dr.Cells["EndTime"].EditedFormattedValue.ToString() != "" ? Convert.ToDateTime(dr.Cells["EndTime"].Value.ToString()) : liquids.BeginTime;
liquids.IsContinue = dr.Cells["Continue"].EditedFormattedValue.ToString() != "" ? 1 : 0;
liquids.Remark = dr.Cells["Remark"].EditedFormattedValue.ToString();
liquids.OperatorNo = PublicMethod.OperatorNo;
liquids.OperatorName = PublicMethod.OperatorName;
liquids.OperateDate = DateTime.Now;
if (dr.Tag == null)
{
////将事件对象保存到集合
int id = BFactOutputLiquids.Insert(liquids);
liquids.Id = id;
_record.FactOutputLiquidsList.Add(liquids);
//将新增的事件Id保存到Row
dr.Tag = id;
}
else
{
liquids.Id = Convert.ToInt32(dr.Tag);
//将修改的事件保存到集合
foreach (FactOutputLiquids eventRecord in _record.FactOutputLiquidsList)
{
if (eventRecord.Id == liquids.Id)
{
//eventRecord.clearAddObj(zgcAnaesRecord);
_record.FactOutputLiquidsList.Remove(eventRecord);
_record.FactOutputLiquidsList.Add(liquids);
break;
}
}
//修改时间对象
BFactOutputLiquids.Update(liquids);
}
}
OutParam();
new frmMessageBox().Show();
//this.Close();
}
#region DataGridView数字单元格验证 GZ
public DataGridViewTextBoxEditingControl dgvTxt = null; // 声明 一个文本 CellEdit
private void dgvOutput_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
//判断类型
if (dgvOutput.CurrentRow.Index != -1 && dgvOutput.CurrentCell.ColumnIndex == 1)
{
ComboBox comboBox = (ComboBox)e.Control;
comboBox.SelectedIndexChanged -= new EventHandler(dgvComboBox_SelectedIndexChanged);
comboBox.SelectedIndexChanged += new EventHandler(dgvComboBox_SelectedIndexChanged);
}
if (dgvTxt != null && (dgvOutput.CurrentCell.ColumnIndex == 4))
{
dgvTxt.KeyPress -= new KeyPressEventHandler(dgvTxt_KeyPress); // 绑定事件
}
if (dgvTxt != null && (dgvOutput.CurrentCell.ColumnIndex == 7))
{
dgvTxt = (DataGridViewTextBoxEditingControl)e.Control; // 得到单元格
dgvTxt.KeyPress -= new KeyPressEventHandler(dgvTxt_KeyPress); // 绑定事件
}
if (dgvOutput.CurrentCell.ColumnIndex == 2)
{
dgvTxt = (DataGridViewTextBoxEditingControl)e.Control; // 得到单元格
dgvTxt.KeyPress -= new KeyPressEventHandler(dgvTxt_KeyPress); // 绑定事件
dgvTxt.KeyPress += new KeyPressEventHandler(dgvTxt_KeyPress); // 绑定事件
if (dgvOutput.CurrentRow.Cells[4].Value == null || dgvOutput.CurrentRow.Cells[4].Value.ToString() == "")
{
dgvOutput.CurrentRow.Cells[4].Value = DateTime.Now;
}
}
if (e.Control.GetType().Equals(typeof(DevComponents.DotNetBar.Controls.DataGridViewDateTimeInputEditingControl)))
((DevComponents.DotNetBar.Controls.DataGridViewDateTimeInputEditingControl)e.Control).DateTimeSelectorVisibility = DevComponents.Editors.DateTimeAdv.eDateTimeSelectorVisibility.DateSelector;
}
/// <summary>
/// DataGridViewComboBoxCell单元格改变选择的事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void dgvComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
//ComboBox cbo = (ComboBox)sender;
//if (cbo.SelectedIndex > 0)
//{
// if (cbo.SelectedValue is OutputLiquids)
// {
// dgvOutput.CurrentCell.Tag = ((OutputLiquids)cbo.SelectedValue).Id;
// }
// else
// {
// dgvOutput.CurrentCell.Tag = cbo.SelectedValue;
// }
// //dgvOutput.CurrentCell.Tag = cbo.SelectedValue;
// OutputLiquids ot = BOutputLiquids.SelectSingle(Convert.ToInt32(dgvOutput.CurrentCell.Tag));
// #region 增加常用出量后取消此功能 20160816 GZ
// //dgvOutput.CurrentRow.Cells["DoseUnit"].Value = BBasicDictionary.SelectSingle(" Id=(select Id from BasicDictionary where Explain='剂量' and IsValid=1 and Name = '" + ot.Unit + "')", null).Id;
// //dgvOutput.CurrentRow.Cells["BeginTime"].Value = PublicMethod.ServerTime().ToString("MM-dd HH:mm");
// #endregion
//}
}
void dgvTxt_KeyPress(object sender, KeyPressEventArgs e)
{
if (dgvOutput.CurrentRow.Cells[1].EditedFormattedValue.ToString() == "")
{
e.Handled = true;
return;
}
if (e.KeyChar < 48 || e.KeyChar > 57)
{
if (e.KeyChar != 46 && e.KeyChar != 8 && e.KeyChar != 13)
{
e.Handled = true;
}
}
else
{
try
{
dgvOutput.CurrentRow.Cells["DoseUnit"].Value = "ml";
if (dgvOutput.CurrentRow.Cells["BeginTime"].EditedFormattedValue.ToString() == "")
{
dgvOutput.CurrentRow.Cells["BeginTime"].Value = DateTime.Now;
}
}
catch (Exception)
{
}
}
if (e.KeyChar == 8 || e.KeyChar == 46)
{
return;
}
TextBox tb = sender as TextBox;
int n = tb.Text.IndexOf(".");
if (n < 0)
{
if (tb.Text.Length > 5)
{
e.Handled = true;
}
}
else
{
if (tb.Text.Substring(n).Length > 2)
{
e.Handled = true;
}
if (n > 6)
{
e.Handled = true;
}
}
}
#endregion
private void frmFactOutputLiquidsNew_FormClosing(object sender, FormClosingEventArgs e)
{
//List<OutputLiquids> UpdateRecordList = GetEventsList();
//if (UpdateRecordList.Count > 0)
//{
// DialogResult dialogResult = MessageBox.Show("记录尚未保存,是否保存当前记录?", "系统提示", MessageBoxButtons.YesNo);
// if (dialogResult == DialogResult.Yes)
// {
// btnSave_Click(null, null);
// }
//}
////this.Hide();
////e.Cancel = true;
}
public bool equelEvents(FactOutputLiquids oldDrug, FactOutputLiquids newDrug)
{
bool b = true;
if (oldDrug.Remark != newDrug.Remark) b = false;
if (oldDrug.Dosage != newDrug.Dosage) b = false;
if (oldDrug.BeginTime != null && newDrug.BeginTime != null && oldDrug.BeginTime.ToString("yyyy-MM-dd HH:mm") != newDrug.BeginTime.ToString("yyyy-MM-dd HH:mm")) b = false;
if (oldDrug.EndTime != newDrug.EndTime && oldDrug.EndTime.ToString("HH:mm") != newDrug.EndTime.ToString("HH:mm")) b = false;
return b;
}
/// <summary>
/// 当前单元格内容发生改变时,将改变提交
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dgvDrugs_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (dgvOutput.IsCurrentCellDirty)
{
dgvOutput.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}
private void dgvOutput_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
if (e.Exception.Message == "DataGridViewComboBoxCell 值无效。")
{
//try
//{
// object value = _dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
// if (!((DataGridViewComboBoxCell)_dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex]).Items.Contains(value))
// {
// ((DataGridViewComboBoxCell)_dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex]).Items.Add(value);
// e.ThrowException = false;
// }
//}
//catch (Exception)
//{
// e.ThrowException = false;
//}
}
}
private void panel2_Paint(object sender, PaintEventArgs e)
{
}
}
}