|
- using CnasSynchronusClient;
- using CnasSynchrousModel;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
-
- namespace CNAS_BalanceClient
- {
- public class CrucibleUIOperation
- {
- /// <summary>
- /// 将天平端传输过来的重量传输到坩埚数据中
- /// </summary>
- /// <param name="DstCurrentLeftGrids"></param>
- /// <param name="dgvCrucibleShelf"></param>
- /// <param name="defaultdouble"></param>
- /// <param name="currentCrucibleDataType"></param>
- /// <param name="laboratoryTests"></param>
- public void UpdateCrucibleBalanceWeight(Dictionary<string, DataGridView> DstCurrentLeftGrids, DataGridView dgvCrucibleShelf, double defaultdouble, string currentCrucibleDataType, List<LaboratoryTest> laboratoryTests)
- {
- //当前坩埚架选中单元格
- if (dgvCrucibleShelf.CurrentCell == null) return;
- if (dgvCrucibleShelf.CurrentCell.ColumnIndex != 3) return; //索引为3的列为“重量”列,其他列不允许插入数值
-
- //是否满足称重范围
- double MinValue = 0;
- double MaxValue = 0;
- switch (currentCrucibleDataType)
- {
- case "Crucible|Heat":
- MinValue = 0.9;
- MaxValue = 1.1;
- break;
- case "Crucible|Sulfur":
- MinValue = 0.045;
- MaxValue = 0.055;
- break;
- case "Crucible|Hydrogen":
- MinValue = 0.05;
- MaxValue = 0.2;
- break;
- }
- if (defaultdouble > MaxValue || defaultdouble < MinValue)
- {
- MessageBox.Show($"称重范围是{MinValue}g~{MaxValue}g.", "提示");
- return;
- }
-
- if (dgvCrucibleShelf.Rows[dgvCrucibleShelf.CurrentCell.RowIndex].Cells[0].Value == null || dgvCrucibleShelf.Rows[dgvCrucibleShelf.CurrentCell.RowIndex].Cells[0].Value.ToString() == "")
- {
- //此时说明datagridview中没有旧值,不存在覆盖问题,可以直接增加数据
- string strSampleCode = GetCurrentSelectedSampleCode(currentCrucibleDataType, DstCurrentLeftGrids);
- if (strSampleCode == "") return; //此时未获得左侧样品编号,不能在右侧增加数据
-
- string strCrucibleNumber = dgvCrucibleShelf.Rows[dgvCrucibleShelf.CurrentCell.RowIndex].Cells["Shelf_CrucibleNumber"].Value.ToString();
- //新增加一条数据
- LaboratoryTest laboratory = new LaboratoryTest();
- laboratory.GUID = Guid.NewGuid().ToString();
- laboratory.Sample_Number = strCrucibleNumber + "-" + strSampleCode;
- laboratory.Sample_Weight = defaultdouble;
- laboratory.Operator = GlobalCommonOperation.strUserName;
- laboratory.OperaDateTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm"));
- laboratory.DataType = currentCrucibleDataType;
- laboratory.Crucible_Number = strCrucibleNumber;
- laboratory.WeighingType = currentCrucibleDataType == "Crucible|Heat" ? "FRL" : (currentCrucibleDataType == "Crucible|Sulfur" ? "CLY" : "CHN");
-
- laboratory.OperationType = "add";
-
- laboratoryTests.Add(laboratory);
-
- //更改datagridview中的值
- dgvCrucibleShelf.Rows[dgvCrucibleShelf.CurrentCell.RowIndex].Cells["Shelf_ID"].Value = laboratory.GUID;
- dgvCrucibleShelf.Rows[dgvCrucibleShelf.CurrentCell.RowIndex].Cells["Shelf_SampleNumber"].Value = laboratory.Sample_Number;
- dgvCrucibleShelf.Rows[dgvCrucibleShelf.CurrentCell.RowIndex].Cells["Shelf_WeighingType"].Value = laboratory.WeighingType;
- dgvCrucibleShelf.Rows[dgvCrucibleShelf.CurrentCell.RowIndex].Cells["Shelf_SampleWeight"].Value = laboratory.Sample_Weight;
- dgvCrucibleShelf.Rows[dgvCrucibleShelf.CurrentCell.RowIndex].Cells["Shelf_Operator"].Value = laboratory.Operator;
- dgvCrucibleShelf.Rows[dgvCrucibleShelf.CurrentCell.RowIndex].Cells["Shelf_SampleWeight"].Value = laboratory.Sample_Weight;
- }
- else //此时说明datagridview中存在旧值,可能存在覆盖问题
- {
- if (MessageBox.Show("单元格已经存在数据,继续将覆盖这个数据,是否继续?", "提示", MessageBoxButtons.OKCancel) == DialogResult.OK)
- {
- string strCurrentID = dgvCrucibleShelf.Rows[dgvCrucibleShelf.CurrentCell.RowIndex].Cells[0].Value.ToString();
- var query = laboratoryTests.Where(s => s.GUID == strCurrentID).ToList<LaboratoryTest>();
- if (query.Count == 1)
- {
- query[0].Sample_Weight = defaultdouble;
- query[0].OperaDateTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm"));
- query[0].Operator = GlobalCommonOperation.strUserName;
- if (query[0].OperationType == null || query[0].OperationType == "")
- query[0].OperationType = "update";
-
- //更改datagridview中的值
- dgvCrucibleShelf.Rows[dgvCrucibleShelf.CurrentCell.RowIndex].Cells["Shelf_SampleWeight"].Value = query[0].Sample_Weight;
- }
- }
- }
- }
-
-
-
- /// <summary>
- /// 获得当前坩埚选中的样品编码
- /// </summary>
- /// <param name="currentCrucibleDataType"></param>
- /// <param name="DstCurrentGrids"></param>
- /// <returns></returns>
- private string GetCurrentSelectedSampleCode(string currentCrucibleDataType, Dictionary<string, DataGridView> DstCurrentGrids)
- {
- string strSampleCode = "";
- DataGridView dgv = DstCurrentGrids[currentCrucibleDataType];
- if (dgv.CurrentCell != null && dgv.Rows[dgv.CurrentCell.RowIndex].Cells[0].Value != null)
- strSampleCode = dgv.Rows[dgv.CurrentCell.RowIndex].Cells[1].Value.ToString();
- return strSampleCode;
- }
-
- /// <summary>
- /// 增加一组坩埚架数据
- /// </summary>
- /// <param name="DictCrucuibleGrids"></param>
- /// <param name="dgvCrucibleShelf"></param>
- /// <param name="currentCrucibleDataType"></param>
- /// <param name="strTypeTitle"></param>
- /// <param name="laboratoryTests"></param>
- public void AddCrucibleShelfData(Dictionary<string, DataGridView> DictCrucuibleGrids, DataGridView dgvCrucibleShelf, string currentCrucibleDataType, string strTypeTitle, List<LaboratoryTest> laboratoryTests)
- {
- //0.判断左侧选中某项内容,如果左侧未选中任何内容,则不应该产生数据
- string strSampleCode = GetCurrentSelectedSampleCode(currentCrucibleDataType, DictCrucuibleGrids);
- //if (strSampleCode == "") return;
- //1.在datagridview上增加20个数据行
- dgvCrucibleShelf.Rows.Clear();
- string strWeighingType = currentCrucibleDataType == "Crucible|Heat" ? "FRL" : (currentCrucibleDataType == "Crucible|Sulfur" ? "CLY" : "CHN");
- for (int i = 1; i < 21; i++)
- {
- int index = dgvCrucibleShelf.Rows.Add();
- dgvCrucibleShelf.Rows[index].Cells["Shelf_CrucibleNumber"].Value = strWeighingType + strTypeTitle + string.Format("{0:D2}", i);
- }
- //2.判断数据库中是否存在该坩埚架的内容,如果存在,则将数据插入到这20行数据行中
- var query = laboratoryTests.Where(s => s.DataType == currentCrucibleDataType && s.Crucible_Number != null && s.Crucible_Number.StartsWith($"{strWeighingType}{strTypeTitle}") && s.OperaDateTime.ToString("yyyyMMdd") == DateTime.Now.ToString("yyyyMMdd") && ((s.OperationType == null) || (s.OperationType != null && s.OperationType.ToLower() != "delete"))).ToList<LaboratoryTest>(); //判断条件:今天的,样品编码以左侧样品号结尾,坩埚号以称量类型开头。
- if (query.Count > 0)
- {
- foreach (var item in query)
- {
- foreach (DataGridViewRow dgr in dgvCrucibleShelf.Rows)
- {
- if (dgr.Cells["Shelf_CrucibleNumber"].Value.ToString() == item.Crucible_Number)
- {
- dgr.Cells["Shelf_ID"].Value = item.GUID;
- dgr.Cells["Shelf_SampleNumber"].Value = item.Sample_Number;
- dgr.Cells["Shelf_WeighingType"].Value = item.WeighingType;
- dgr.Cells["Shelf_SampleWeight"].Value = item.Sample_Weight;
- dgr.Cells["Shelf_Operator"].Value = item.Operator;
- }
- }
- }
- }
- }
- }
- }
|