123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327 |
- using OTSCLRINTERFACE;
- using OTSDataType;
- using OTSModelSharp.DTLBase;
- using System;
- using System.Collections.Generic;
- using System.Data;
- using System.Data.SQLite;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace OTSModelSharp.DTLBase
- {
- public class CElementChemistryDB : CSQLiteDB
- {
- List<CPosXrayClr> m_listPosXrayInfo = new List<CPosXrayClr>();
- public CElementChemistryDB(IDBStoreBase _conStr, IDBTableBase _table) : base(_conStr, _table)
- {
- }
- public System.Data.DataTable GetQueryById(long a_nXrayId, long a_nFieldId, long a_nElementId, long a_nElementSize)
- {
- var datastorePtr = GetDatastore();
- var tableInfoPtr = GetTableInfo();
- var sXrayIdColumnName = tableInfoPtr.GetColumnName((int)CElementChemistryTable.ColumnID.N_XRAY_INDEX - (int)CElementChemistryTable.ColumnID.MIN);
- var sFieldIdColumnName = tableInfoPtr.GetColumnName((int)CElementChemistryTable.ColumnID.N_FIELD_ID - (int)CElementChemistryTable.ColumnID.MIN);
- var sElementIdColumnName = tableInfoPtr.GetColumnName((int)CElementChemistryTable.ColumnID.N_ELEMENT_ID - (int)CElementChemistryTable.ColumnID.MIN);
- var sElementNumColumnName = tableInfoPtr.GetColumnName((int)CElementChemistryTable.ColumnID.N_ELEMENT_TOTAL - (int)CElementChemistryTable.ColumnID.MIN);
- String sSQLCommand = String.Format("SELECT * FROM \'{0}\' WHERE {1} = {2} AND {3} ={4} AND {5} ={6} AND {7} = {8};", (String)tableInfoPtr.GetTableName(), sFieldIdColumnName,
- a_nFieldId, sXrayIdColumnName, a_nXrayId, sElementIdColumnName, a_nElementId, sElementNumColumnName, a_nElementSize);
- var q = datastorePtr.QueryByCmdForDataTable(sSQLCommand);
- return q;
- }
- public List<CPosXrayClr> GetXrayInfoList(bool a_bForce/* = FALSE*/)
- {
- if (a_bForce)
- {
- m_listPosXrayInfo.Clear();
- }
- if (m_listPosXrayInfo.Count == 0)
- {
- ReadXrayPointInfoList();
- }
- return m_listPosXrayInfo;
- }
- public bool ReadXrayPointInfoList()
- {
- var tableInfoPtr = GetTableInfo();
- var query = GetTableQueryForDataTable("");
- m_listPosXrayInfo = ReadXrayPointInfoList(query);
- return true;
- }
- public bool SaveElementChemistriesList_Batch(List<CPosXrayClr> a_xrayPointList)
- {
- List<KeyValuePair<string, SQLiteParameter[]>> list = new List<KeyValuePair<string, SQLiteParameter[]>>();
- foreach (var xrayPointInfo in a_xrayPointList)
- {
- List<CElementChemistryClr> listElemnentChemistries = xrayPointInfo.GetElementQuantifyData();
- int nSize = (int)listElemnentChemistries.Count;
- int nElementIndex = 0;
- foreach (var pElementChemistry in listElemnentChemistries)
- {
- //INSERT INTO ElementChemistry(XRayId, FieldId, ElementId, ElementNum, Name, Percentage) VALUES({ 0:G},{ 1:G},{ 2:G},{ 3:G},"{4:G}",{ 5:G})
- string sSQLCommand = "INSERT INTO ElementChemistry(XRayId, FieldId, ElementId, ElementNum, Name, Percentage) VALUES(@XRayId,@FieldId,@ElementId,@ElementNum,@Name,@Percentage)";
- var paras = new SQLiteParameter[6];
- paras[0] = new SQLiteParameter("XRayId");
- paras[0].Value = xrayPointInfo.GetIndex();
- paras[1] = new SQLiteParameter("FieldId");
- paras[1].Value = xrayPointInfo.GetScanFieldId();
- paras[2] = new SQLiteParameter("ElementId");
- paras[2].Value = nElementIndex;
- paras[3] = new SQLiteParameter("ElementNum");
- paras[3].Value = nSize;
- paras[4] = new SQLiteParameter("Name");
- paras[4].Value = pElementChemistry.GetName();
- paras[5] = new SQLiteParameter("Percentage");
- paras[5].Value = pElementChemistry.GetPercentage();
- list.Add(new KeyValuePair<string, SQLiteParameter[]>(sSQLCommand, paras));
- }
- }
- var datastorePtr = GetDatastore();
- try
- {
- datastorePtr.ExecuteNonQueryBatch(ref list);
- return true;
- }
- catch (Exception e)
- {
- NLog.LogManager.GetCurrentClassLogger().Error(e.Message);
- return false;
- }
- }
- public bool SaveElementChemistriesList(CPosXrayClr a_pxrayPoint)
- {
- var tableInfoPtr = GetTableInfo();
- var datastorePtr = GetDatastore();
- String sInsertFormat = tableInfoPtr.GetInsertCommandFormatString();
- String sSQLCommand = "";
- List<CElementChemistryClr> listElemnentChemistries = a_pxrayPoint.GetElementQuantifyData();
- int nSize = (int)listElemnentChemistries.Count;
- int nElementIndex = 0;
- foreach (var pElementChemistry in listElemnentChemistries)
- {
- sSQLCommand = String.Format(sInsertFormat,
- a_pxrayPoint.GetIndex(),
- a_pxrayPoint.GetScanFieldId(),
- nElementIndex,
- nSize,
- pElementChemistry.GetName(),
- pElementChemistry.GetPercentage(),
- pElementChemistry.GetMolarPercentage());
- if (datastorePtr.RunCommand(sSQLCommand) != true)
- {
- return false;
- }
- nElementIndex++;
- }
- return true;
- }
- public List<KeyValuePair<string, SQLiteParameter[]>> GetSavingElementChemistriesCmds(CPosXrayClr a_pxrayPoint)
- {
- List<KeyValuePair<string, SQLiteParameter[]>> cmds = new List<KeyValuePair<string, SQLiteParameter[]>>();
- var tableInfoPtr = GetTableInfo();
- var sInsertFormat = tableInfoPtr.GetInsertCommand();
- var parasTem = sInsertFormat.Value;
- List<CElementChemistryClr> listElemnentChemistries = a_pxrayPoint.GetElementQuantifyData();
- int nSize = (int)listElemnentChemistries.Count;
- int nElementIndex = 0;
- foreach (var pElementChemistry in listElemnentChemistries)
- {
- var paras = new SQLiteParameter[6];
- for (int j = 0; j < 6; j++)
- {
- paras[j] = new SQLiteParameter(parasTem[j].ParameterName);
- }
- paras[0].Value = a_pxrayPoint.GetIndex();
- paras[1].Value = a_pxrayPoint.GetScanFieldId();
- paras[2].Value = nElementIndex;
- paras[3].Value = nSize;
- paras[4].Value = pElementChemistry.GetName();
- paras[5].Value = pElementChemistry.GetPercentage();
- nElementIndex++;
- cmds.Add(new KeyValuePair<string, SQLiteParameter[]>(sInsertFormat.Key, paras));
- }
-
- return cmds;
- }
- public bool DeleteElementChemistryById(long a_nFieldId, long a_nXrayId)
- {
- if (m_listPosXrayInfo.Count != 0)
- {
- for (int itr = 0; itr < m_listPosXrayInfo.Count; itr++)
- {
- if (m_listPosXrayInfo[itr].ToString() == a_nFieldId.ToString())
- {
- CPosXrayClr posXrayInfo = new CPosXrayClr();
- posXrayInfo = m_listPosXrayInfo[itr];
- break;
- }
- }
- }
- //DataTable query;
- var tableInfoPtr = GetTableInfo();
- var datastorePtr = GetDatastore();
- String sTableName = tableInfoPtr.GetTableName();
- if (IsTableExists(sTableName))
- {
- var sXrayIdColumnName = tableInfoPtr.GetColumnName((int)CElementChemistryTable.ColumnID.N_XRAY_INDEX - (int)CElementChemistryTable.ColumnID.MIN);
- var sFieldIdColumnName = tableInfoPtr.GetColumnName((int)CElementChemistryTable.ColumnID.N_FIELD_ID - (int)CElementChemistryTable.ColumnID.MIN);
- String sSQLCommand =
- String.Format("DELETE FROM \'{0}\' WHERE {1} = {2} AND {3} ={4};",
- sTableName,
- sXrayIdColumnName,
- a_nXrayId,
- sFieldIdColumnName,
- a_nFieldId);
- //var helper = new SQLiteHelper(datastorePtr);
- datastorePtr.RunCommand(sSQLCommand);
- }
- return true;
- }
- public bool IsTableExists(String a_sTableName)
- {
- return IsDBExist();
- }
- public List<CPosXrayClr> ReadXrayPointInfoList(DataTable a_query)
- {
- List<CPosXrayClr> xrayList = new List<CPosXrayClr>();
- Dictionary<string, CPosXrayClr> mapXrayInfo = new Dictionary<string, CPosXrayClr>();
- foreach (DataRow row in a_query.Rows)
- {
- int nCol = (int)CElementChemistryTable.ColumnID.N_FIELD_ID - (int)CElementChemistryTable.ColumnID.MIN;
- int curFldId = Convert.ToInt32(row[nCol]);
- nCol = (int)CElementChemistryTable.ColumnID.N_XRAY_INDEX - (int)CElementChemistryTable.ColumnID.MIN;
- int xrayId = Convert.ToInt32(row[nCol]);
- string fldvec = "";
- fldvec += curFldId.ToString();
- fldvec += "_";
- fldvec += xrayId.ToString();
- nCol = (int)CElementChemistryTable.ColumnID.S_NAME - (int)CElementChemistryTable.ColumnID.MIN;
- string cheName = Convert.ToString(row[nCol]);
- nCol = (int)CElementChemistryTable.ColumnID.F_PERCENTAGE - (int)CElementChemistryTable.ColumnID.MIN;
- double percentage = Convert.ToDouble(row[nCol]);
- CElementChemistryClr che = new CElementChemistryClr(cheName, percentage);
- if (!mapXrayInfo.ContainsKey(fldvec))
- {
- CPosXrayClr xray = new CPosXrayClr();
- xray.AddQuantifyElement(che);
- mapXrayInfo.Add(fldvec, xray);
- }
- else
- {
- CPosXrayClr xray = mapXrayInfo[fldvec];
- xray.AddQuantifyElement(che);
- }
- }
- foreach (var keyvalue in mapXrayInfo)
- {
- xrayList.Add(keyvalue.Value);
- }
- return xrayList;
- }
- public bool GetAllMapedXrayInfo(ref Dictionary<string, CPosXrayClr> mapXrayInfo)
- {
- DataTable a_query = GetTableQueryForDataTable();
- //Dictionary<string, CPosXrayClr> mapXrayInfo = new Dictionary<string, CPosXrayClr>();
- foreach (DataRow row in a_query.Rows)
- {
- int nCol = (int)CElementChemistryTable.ColumnID.N_FIELD_ID - (int)CElementChemistryTable.ColumnID.MIN;
- int curFldId = Convert.ToInt32(row[nCol]);
- nCol = (int)CElementChemistryTable.ColumnID.N_XRAY_INDEX - (int)CElementChemistryTable.ColumnID.MIN;
- int xrayId = Convert.ToInt32(row[nCol]);
- string fldvec = "";
- fldvec += curFldId.ToString();
- fldvec += "_";
- fldvec += xrayId.ToString();
- nCol = (int)CElementChemistryTable.ColumnID.S_NAME - (int)CElementChemistryTable.ColumnID.MIN;
- string cheName = Convert.ToString(row[nCol]);
- nCol = (int)CElementChemistryTable.ColumnID.F_PERCENTAGE - (int)CElementChemistryTable.ColumnID.MIN;
- double percentage = Convert.ToDouble(row[nCol]);
- CElementChemistryClr che = new CElementChemistryClr(cheName, percentage);
- if (!mapXrayInfo.ContainsKey(fldvec))
- {
- CPosXrayClr xray = new CPosXrayClr();
- xray.AddQuantifyElement(che);
- mapXrayInfo.Add(fldvec, xray);
- }
- else
- {
- CPosXrayClr xray = mapXrayInfo[fldvec];
- xray.AddQuantifyElement(che);
- }
- }
- return true;
- }
- }
- }
|