1
0

2 Commits 807ae82877 ... 580824e79a

Autor SHA1 Mensagem Data
  zhangjiaxin 580824e79a Merge branch 'OTSRelease3_2' of http://36.129.163.148:30080/gogsadmin/OTS into OTSRelease3_2 1 mês atrás
  zhangjiaxin c1af6f97eb 报告程序BUG修复(配置文件修改导致读取数据发生错误) 1 mês atrás

+ 72 - 9
OTSIncAReportApp/1-UI/OTSReportExport/DataIntegration/ParticleList.cs

@@ -13,6 +13,8 @@ using System.IO;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using System.Windows.Forms;
+using System.Windows.Media;
 using static OTSDataType.otsdataconst;
 using static OTSIncAReportApp.OTSReport_Export;
 
@@ -37,7 +39,10 @@ namespace OTSIncAReportApp._1_UI.OTSReportExport.DataIntegration
             //根据sql条件,查询获取颗粒信息数据
             ParticleData fielddata = new ParticleData(m_otsreport_export.m_ReportApp.m_rstDataMgr.ResultFilesList[m_otsreport_export.m_ReportApp.m_rstDataMgr.GetWorkingResultId()].FilePath);
             DataTable btb = InvalidRemoval(fielddata.GetIncaSurfaceData(m_mbszclass.M_KLLBXX.list_str_kllb_qcys));
-            DataTable dt;
+
+            //DataTable particles = fielddata.GetSplicingParticlesData();
+
+			DataTable dt;
             
             if (m_mbszclass.list_str_MainPriority_Serial.Count == 0)
             {
@@ -209,7 +214,7 @@ namespace OTSIncAReportApp._1_UI.OTSReportExport.DataIntegration
                     Rectangle rectangle = new Rectangle() { X = Convert.ToInt32(dt_ParticlesGridDevidePage.Rows[i_row]["RectLeft"]), Y = Convert.ToInt32(dt_ParticlesGridDevidePage.Rows[i_row]["RectTop"]), Width = Convert.ToInt32(dt_ParticlesGridDevidePage.Rows[i_row]["RectWidth"]), Height = Convert.ToInt32(dt_ParticlesGridDevidePage.Rows[i_row]["RectHeight"]) };
                     Bitmap bp_field = fielddata.ReadImageFile(str_imagePath);
                     Bitmap bp_particle = fielddata.GetBitmapByParticle(bp_field, rectangle);
-                    bp_particle = imageProcessor.ResizeImageWithPadding(bp_particle, 120, 120, Color.White);
+                    bp_particle = imageProcessor.ResizeImageWithPadding(bp_particle, 120, 120, System.Drawing.Color.White);
                     bp_particle.Tag = new List<string>() { dt_ParticlesGridDevidePage.Rows[i_row]["FieldId"].ToString(), dt_ParticlesGridDevidePage.Rows[i_row]["ParticleId"].ToString(), dt_ParticlesGridDevidePage.Rows[i_row]["TypeId"].ToString() };
                     //获取该颗粒的xray能谱图像
                     DataTable DT_XR = ExportXRay(str_fieldid, str_particleid, fielddata);
@@ -219,7 +224,7 @@ namespace OTSIncAReportApp._1_UI.OTSReportExport.DataIntegration
                     Bitmap ls_xraybpnew = OTSIncAReportGraph.Class.DrawFunction.KiResizeImage(bp_xraybp, 700, 115);//能谱图处理
                     DataTable SegmentData = fielddata.GetSegment();
                   Bitmap BinaryParticles= ImageSplicer.ParticleBinaryDiagram(SegmentData, Convert.ToInt32(str_fieldid), Convert.ToInt32(str_particleid));
-                    Bitmap BP= imageProcessor.ResizeImageWithPadding(BinaryParticles, 120, 120, Color.White);
+                    Bitmap BP= imageProcessor.ResizeImageWithPadding(BinaryParticles, 120, 120, System.Drawing.Color.White);
                     //获取该颗粒的二次放大处理图像
                     //Bitmap ls_processbitmap = OTSIncAReportGraph.Class.DrawFunction.GetReZoomBitmap(bp_particle);// (Bitmap)bp_particle.Clone();//待完善
                     //再将图像转成二进制流-------------------------------------------------------------------
@@ -298,13 +303,71 @@ namespace OTSIncAReportApp._1_UI.OTSReportExport.DataIntegration
             return DT_Largest20;
         }
         /// <summary>
-        /// 颗粒列表帧图
+        /// 拼接颗粒
         /// </summary>
-        /// <param name="m_mbszclass"></param>
-        /// <param name="file_pic"></param>
-        /// <param name="list_dt"></param>
-        /// <param name="m_otsreport_export"></param>
-        public void Get_dev_kllb_data_frame(c_TemplateClass m_mbszclass, out DataTable file_pic, out List<DataTable> list_dt, OTSReport_Export m_otsreport_export,DataTable FrameData)
+        public DataTable GetSplicingParticlesData(OTSReport_Export m_otsreport_export)
+        {
+            DataTable SplicingParticlesData = new DataTable();
+            SplicingParticlesData.Columns.Add("image",typeof(Bitmap));
+            SplicingParticlesData.Columns.Add("TypeName");
+			SplicingParticlesData.Columns.Add("Area");
+            SplicingParticlesData.Columns.Add("ECD");
+            SplicingParticlesData.Columns.Add("DiameterRatio");
+            SplicingParticlesData.Columns.Add("DPERP");
+
+            //根据sql条件,查询获取颗粒信息数据
+            ParticleData fielddata = new ParticleData(m_otsreport_export.m_ReportApp.m_rstDataMgr.ResultFilesList[m_otsreport_export.m_ReportApp.m_rstDataMgr.GetWorkingResultId()].FilePath);
+			DataTable particles = fielddata.GetSplicingParticlesData();
+            if (particles.Rows.Count == 0)
+            {
+                return SplicingParticlesData;
+            }
+			ResultFile result = null;
+			string sou = m_otsreport_export.m_ReportApp.m_conditionChoose.m_CurrentConditions[OTSIncAReportApp.OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE].itemDisplayVal.ToString();
+			if (sou.Contains("+"))
+			{
+				MessageBox.Show("This function does not support multiple samples!");
+				result = m_otsreport_export.m_ReportApp.m_rstDataMgr.ResultFilesList[0];
+			}
+			else
+			{
+				result = m_otsreport_export.m_ReportApp.m_rstDataMgr.ResultFilesList[m_otsreport_export.m_ReportApp.m_conditionChoose.m_conditionData.GetComboDownListIndexByItemName(OTSIncAReportApp.OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE)];
+			}
+			ParticleData Particledata = new ParticleData(result.FilePath);
+			string filePath = result.FilePath + "\\FIELD_FILES\\";
+			for (int i = 0; i < particles.Rows.Count; i++)
+            {
+				KeyValuePair<string, Bitmap> FieldImage = new KeyValuePair<string, Bitmap>();
+				if (FieldImage.Key != particles.Rows[i]["fieldid"].ToString() || FieldImage.Value == null)
+				{
+					string imagePath = filePath + "Field" + particles.Rows[i]["fieldid"].ToString() + ".bmp";
+					FieldImage = new KeyValuePair<string, Bitmap>(particles.Rows[i]["fieldid"].ToString(), Particledata.ReadImageFile(imagePath));
+				}
+				Rectangle rectangle = new Rectangle() { X = Convert.ToInt32(particles.Rows[i]["RectLeft"]), Y = Convert.ToInt32(particles.Rows[i]["RectTop"]), Width = Convert.ToInt32(particles.Rows[i]["RectWidth"]), Height = Convert.ToInt32(particles.Rows[i]["RectHeight"]) };
+				Bitmap bmap = Particledata.GetBitmapByParticle(FieldImage.Value, rectangle);
+				bmap.Tag = new List<string>() { particles.Rows[i]["FieldId"].ToString(), particles.Rows[i]["ParticleId"].ToString(), particles.Rows[i]["TypeId"].ToString(), particles.Rows[i]["XrayId"].ToString() };
+                DataRow row = SplicingParticlesData.NewRow();
+                row["image"] = bmap;
+                row["TypeName"] = particles.Rows[i]["TypeName"];
+                row["Area"] = particles.Rows[i]["Area"];
+                row["ECD"] = (Convert.ToDouble(particles.Rows[i]["Area"]) / Math.PI) * 2;
+                row["DiameterRatio"] = Convert.ToDouble(particles.Rows[i]["DMAX"]) / Convert.ToDouble(particles.Rows[i]["DMIN"]);
+                row["DPERP"] = particles.Rows[i]["DPERP"];
+                SplicingParticlesData.Rows.Add(row);
+			}
+            return SplicingParticlesData;
+
+		}
+
+
+		/// <summary>
+		/// 颗粒列表帧图
+		/// </summary>
+		/// <param name="m_mbszclass"></param>
+		/// <param name="file_pic"></param>
+		/// <param name="list_dt"></param>
+		/// <param name="m_otsreport_export"></param>
+		public void Get_dev_kllb_data_frame(c_TemplateClass m_mbszclass, out DataTable file_pic, out List<DataTable> list_dt, OTSReport_Export m_otsreport_export,DataTable FrameData)
         {
             m_otsreport_export.m_ReportApp.im_ParticlesGridDevidePage = new ParticlesGridDevidePage(m_otsreport_export.m_ReportApp);
             //根据sql条件,查询获取颗粒信息数据

+ 62 - 6
OTSIncAReportApp/1-UI/OTSReportExport/Template/DataTemplate.cs

@@ -2241,11 +2241,19 @@ namespace OTSIncAReportApp._1_UI.OTSTemplateDesigner
             }
             NeueStartposition = NeueStartposition + 10;
         }
-        /// <summary>
-        /// 颗粒列表 帧图
-        /// </summary>
-        /// <param name="TemplateClass"></param>
-        public void set_kllb_data_frame()
+
+        private void SplicingParticles()
+        {
+			ParticleList particleList = new ParticleList();
+            DataTable data = particleList.GetSplicingParticlesData(m_otsreport_export);
+
+		}
+
+		/// <summary>
+		/// 颗粒列表 帧图
+		/// </summary>
+		/// <param name="TemplateClass"></param>
+		public void set_kllb_data_frame()
         {
             ParticleList particleList = new ParticleList();
             particleList.Get_dev_kllb_data_frame(TemplateClass, out DataTable dt_pic, out List<DataTable> listData, m_otsreport_export, FrameData);
@@ -3408,7 +3416,55 @@ namespace OTSIncAReportApp._1_UI.OTSTemplateDesigner
 
             return Template;
         }
-        private void add_kllb(c_TemplateClass TemplateClass, DataTable dataTable, int position, XRTable xRTable, DataTable ElementIcons)
+
+
+        private XRTable add_montage_XRTable()
+        {
+			XRTable Template = new XRTable();
+			XRTableRow Template_Rows_1 = new XRTableRow();
+			XRTableCell Template_Rows1_Cell_1 = new XRTableCell();
+			XRTableCell Template_Rows1_Cell_2 = new XRTableCell();
+			XRTableCell Template_Rows1_Cell_3 = new XRTableCell();
+			XRTableCell Template_Rows1_Cell_4 = new XRTableCell();
+			XRTableCell Template_Rows1_Cell_5 = new XRTableCell();
+			XRTableCell Template_Rows1_Cell_6 = new XRTableCell();
+			XRTableRow Template_Rows_2 = new XRTableRow();
+			XRTableCell Template_Rows_2_Cell_1 = new XRTableCell();
+			XRTableCell Template_Rows_2_Cell_2 = new XRTableCell();
+			XRTableCell Template_Rows_2_Cell_3 = new XRTableCell();
+			XRTableCell Template_Rows_2_Cell_4 = new XRTableCell();
+			XRTableCell Template_Rows_2_Cell_5 = new XRTableCell();
+			XRTableCell Template_Rows_2_Cell_6 = new XRTableCell();
+            Template_Rows_1.Controls.Add(Template_Rows1_Cell_1);
+			Template_Rows_1.Controls.Add(Template_Rows1_Cell_2);
+			Template_Rows_1.Controls.Add(Template_Rows1_Cell_3);
+			Template_Rows_1.Controls.Add(Template_Rows1_Cell_4);
+			Template_Rows_1.Controls.Add(Template_Rows1_Cell_5);
+			Template_Rows_1.Controls.Add(Template_Rows1_Cell_6);
+            Template_Rows_2.Controls.Add(Template_Rows_2_Cell_1);
+			Template_Rows_2.Controls.Add(Template_Rows_2_Cell_2);
+			Template_Rows_2.Controls.Add(Template_Rows_2_Cell_3);
+			Template_Rows_2.Controls.Add(Template_Rows_2_Cell_4);
+			Template_Rows_2.Controls.Add(Template_Rows_2_Cell_5);
+			Template_Rows_2.Controls.Add(Template_Rows_2_Cell_6);
+			Template_Rows1_Cell_1.WidthF = 115f;
+			Template_Rows1_Cell_2.WidthF = 95.5f;
+			Template_Rows1_Cell_3.WidthF = 95.5f;
+			Template_Rows1_Cell_4.WidthF = 95.5f;
+			Template_Rows1_Cell_5.WidthF = 95.5f;
+			Template_Rows1_Cell_6.WidthF = 95.5f;
+			Template_Rows_2_Cell_1.WidthF = 115f;
+			Template_Rows_2_Cell_2.WidthF = 95.5f;
+			Template_Rows_2_Cell_3.WidthF = 95.5f;
+			Template_Rows_2_Cell_4.WidthF = 95.5f;
+			Template_Rows_2_Cell_5.WidthF = 95.5f;
+			Template_Rows_2_Cell_6.WidthF = 95.5f;
+			Template.Borders = DevExpress.XtraPrinting.BorderSide.All;
+			return Template;
+		}
+
+
+		private void add_kllb(c_TemplateClass TemplateClass, DataTable dataTable, int position, XRTable xRTable, DataTable ElementIcons)
         {
             XRTable table = new XRTable();
             table = xRTable;

+ 106 - 13
OTSIncAReportApp/1-UI/frmMeasureRstMgr.cs

@@ -1,3 +1,4 @@
+using Microsoft.Office.Core;
 using OTS.WinFormsUI.Docking;
 using OTSCLRINTERFACE;
 using OTSCommon;
@@ -13,7 +14,9 @@ using System.Collections.Generic;
 using System.Drawing;
 using System.IO;
 using System.Runtime.InteropServices;
+using System.Text.RegularExpressions;
 using System.Windows.Forms;
+using static DevExpress.XtraCharts.GLGraphics.GL;
 using static OTSDataType.otsdataconst;
 
 namespace OTSIncAReportApp
@@ -574,21 +577,107 @@ namespace OTSIncAReportApp
        
             string libname = resultfile.GetSTDName();
 
+            string LibraryName = GetStandardLibraryName(resultfile);
+            string MeasurementType = GetMeasurementType(resultfile);
+
+			int steelTech = resultfile.GetIncASteeltech();
+
+            //ClassifyParticle(mergedParticles, libname, m_ReportApp.m_RptConfigFile.Systype, steelTech);
+            ClassifyParticle(mergedParticles, LibraryName, m_ReportApp.m_RptConfigFile.Systype, steelTech, Convert.ToInt16(MeasurementType));
 
-            int steelTech = resultfile.GetIncASteeltech();
-            ClassifyParticle(mergedParticles, libname, m_ReportApp.m_RptConfigFile.Systype, steelTech);
-           
 
-            log.Info("begin merged particle data db saving...");
+			log.Info("begin merged particle data db saving...");
 
 
             SaveMergedParticles(mergedParticles,resultfile.GetResultDBPath());
 
             MessageBox.Show("边界颗粒合成完成!");
             this.Cursor = System.Windows.Forms.Cursors.Default;
-        }
+		}
+        /// <summary>
+        /// 获取标准库名称
+        /// </summary>
+        /// <returns></returns>
+        private string GetStandardLibraryName(ResultFile resultfile)
+        {
+			string LibraryName = "";
+			string strSTDType = resultfile.GetSTDEngineType();
+			string rstSTD = resultfile.GetSTDName();
+			string[] result = Regex.Split(strSTDType, ":");
+			if (result[0] == "-1")
+			{
+				if ("NoSTDDB" == rstSTD ||
+		  "NoSTDDB.db" == rstSTD)
+				{
+					LibraryName = "OTSIncASysSTD";
+				}
+				else
+				{
+					LibraryName = rstSTD;
+				}
+			}
+			else
+			if (result[0] == "0")
+			{
+				LibraryName = "OTSIncASysSTD";
+			}
+			else if (result[0] == "1")
+			{
+
+				if ("NoSTDDB" == rstSTD ||
+				"NoSTDDB.db" == rstSTD)
+				{
+					LibraryName = "OTSIncASysSTD";
+				}
+				else
+				{
+					LibraryName = rstSTD;
+				}
+			}
+			else if (result[0] == "2")
+			{
+				if ("NoSTDDB" == rstSTD ||
+				"NoSTDDB.db" == rstSTD)
+				{
+					LibraryName = "OTSIncASysSTD";
+				}
+				else
+				{
+					//LibraryName.Add("OTSIncASysSTD+");
+					LibraryName = rstSTD;
+				}
+			}
+			else if (result[0] == "3")
+			{
+				if ("NoSTDDB" == rstSTD ||
+				"NoSTDDB.db" == rstSTD)
+				{
+					LibraryName = "OTSIncASysSTD";
+				}
+				else
+				{
+					LibraryName = rstSTD;
+				}
+			}
+
+            return LibraryName;
+		}
 
-        public bool MergeBigBoundaryParticles(List<OTSCommon.DBOperate.Model.Field> allFields, double pixelSize, int scanFieldSize, System.Drawing.Size ResolutionSize, ref List<COTSParticleClr> mergedParts)
+        /// <summary>
+        /// 测量结果类型
+        /// </summary>
+        /// <param name="resultfile"></param>
+        /// <returns></returns>
+        private string GetMeasurementType(ResultFile resultfile)
+        {
+			string strSTDType = resultfile.GetSTDEngineType();
+			string rstSTD = resultfile.GetSTDName();
+			string[] result = Regex.Split(strSTDType, ":");
+            return result[0];
+		}
+
+
+		public bool MergeBigBoundaryParticles(List<OTSCommon.DBOperate.Model.Field> allFields, double pixelSize, int scanFieldSize, System.Drawing.Size ResolutionSize, ref List<COTSParticleClr> mergedParts)
         {
             List<COTSFieldDataClr> fldclrs = new List<COTSFieldDataClr>();
 
@@ -649,14 +738,14 @@ namespace OTSIncAReportApp
             return true;
 
         }
-        private bool ClassifyParticle(List<COTSParticleClr> parts,string libname, OTS_SysType_ID systype,int steeltech)
+        private bool ClassifyParticle(List<COTSParticleClr> parts,string libname, OTS_SysType_ID systype,int steeltech,int type)
         {
             bool r = true;
             try
             {
                 if (systype == OTS_SysType_ID.IncA)
                 {
-                  r=  COffLineClassifyLogic.ClassifyIncA(parts, libname,steeltech);
+                  r=  COffLineClassifyLogic.ClassifyIncA(parts, libname,steeltech, type);
                 }
                 else if (systype == OTS_SysType_ID.TCCleannessA)
                 {
@@ -703,6 +792,7 @@ namespace OTSIncAReportApp
 
         private void ToolStripMenuItem_Zeroelementprocess_Click(object sender, EventArgs e)
         {
+
             if (this.treeView1.SelectedNode == null) return;
             var SampleName = this.treeView1.SelectedNode.Text;
             var resultfile = m_RstDataMgr.GetResultFileObjByName(SampleName);
@@ -714,12 +804,14 @@ namespace OTSIncAReportApp
             ParticleClrs = GetParticleClrFromFields(resultfile.List_OTSField);
             if (m_ReportApp.m_RptConfigFile.Systype == OTS_SysType_ID.IncA)
             {
-                if (resultfile.GetUseSysSTD())
-                {
+                string MeasurementType = GetMeasurementType(resultfile);
+                if (MeasurementType =="0"|| MeasurementType=="1")
+				{
                     OTSCLRINTERFACE.COTSClassifyEngineClr EngineClr = new COTSClassifyEngineClr(EngineType.InclutionEng, "NoSTDDB");
                     ParticleClrs = ZeroElementProcess(EngineClr, ParticleClrs);
                 }
-                string libname = resultfile.GetSTDName();
+				//string libname = resultfile.GetSTDName();
+				string libname = GetStandardLibraryName(resultfile);
                 if (!libname.Contains(".db"))
                 {
                     libname += ".db";
@@ -737,8 +829,9 @@ namespace OTSIncAReportApp
             }
             else
             {
-                string libname = resultfile.GetSTDName();
-                if (!libname.Contains(".db"))
+				//string libname = resultfile.GetSTDName();
+				string libname = GetStandardLibraryName(resultfile);
+				if (!libname.Contains(".db"))
                 {
                     libname += ".db";
                 }

+ 56 - 12
OTSIncAReportApp/3-ServiceCenter/COffLineClassifyLogic.cs

@@ -10,30 +10,42 @@ namespace OTSCommon
         //we have a complicate online classify logic(considering the xray counts and using the spectrum compare and may do not quantify)
         //when we do classification offline we cann't use that mechanism so we use a surrogate mechanism which is simpler and general .
         private static CClassifyEngine m_classifyEngine = new CClassifyEngine();
-        public static bool ClassifyIncA(List<COTSParticleClr> parts, string stdname, int steelTech)
+        public static bool ClassifyIncA(List<COTSParticleClr> parts, string stdname, int steelTech, int type)
         {
             bool r = true;
-            if (stdname != "NoSTDDB"&& stdname != "NoSTDDB.db")
+            if (type == -1)
             {
-                foreach (var part in parts)
+                if (stdname != "NoSTDDB" && stdname != "NoSTDDB.db")
                 {
-                    part.SetType((int)OTS_PARTICLE_TYPE.NOT_IDENTIFIED);
-                    IClassifyEngine engine = m_classifyEngine.GetExpressionClassifyEngine(stdname);
-                    r = engine.ClassifyByExpression(part);
+                    foreach (var part in parts)
+                    {
+                        part.SetType((int)OTS_PARTICLE_TYPE.NOT_IDENTIFIED);
+                        IClassifyEngine engine = m_classifyEngine.GetExpressionClassifyEngine(stdname);
+                        r = engine.ClassifyByExpression(part);
 
 
-                    if (part.GetType() == (int)OTS_PARTICLE_TYPE.NOT_IDENTIFIED)
-                    {
+                        if (part.GetType() == (int)OTS_PARTICLE_TYPE.NOT_IDENTIFIED)
+                        {
 
-                        engine = m_classifyEngine.GetIncClassifyEngine();
-                        r = engine.ClassifyIncA(part, steelTech);
+                            engine = m_classifyEngine.GetIncClassifyEngine();
+                            r = engine.ClassifyIncA(part, steelTech);
+
+                        }
 
                     }
 
                 }
-
+                else
+                {
+                    foreach (var part in parts)
+                    {
+                        IClassifyEngine engine;
+                        engine = m_classifyEngine.GetIncClassifyEngine();
+                        r = engine.ClassifyIncA(part, steelTech);
+                    }
+                }
             }
-            else
+            else if (type == 0)
             {
                 foreach (var part in parts)
                 {
@@ -42,6 +54,38 @@ namespace OTSCommon
                     r = engine.ClassifyIncA(part, steelTech);
                 }
             }
+            else if (type == 1 || type == 2 || type == 3 )
+            {
+                if (stdname != "NoSTDDB" && stdname != "NoSTDDB.db")
+                {
+                    foreach (var part in parts)
+                    {
+                        part.SetType((int)OTS_PARTICLE_TYPE.NOT_IDENTIFIED);
+                        IClassifyEngine engine = m_classifyEngine.GetExpressionClassifyEngine(stdname);
+                        r = engine.ClassifyByExpression(part);
+
+
+                        if (part.GetType() == (int)OTS_PARTICLE_TYPE.NOT_IDENTIFIED)
+                        {
+
+                            engine = m_classifyEngine.GetIncClassifyEngine();
+                            r = engine.ClassifyIncA(part, steelTech);
+
+                        }
+
+                    }
+
+                }
+                else
+                {
+                    foreach (var part in parts)
+                    {
+                        IClassifyEngine engine;
+                        engine = m_classifyEngine.GetIncClassifyEngine();
+                        r = engine.ClassifyIncA(part, steelTech);
+                    }
+                }
+            }
 
             return r;
         }

+ 24 - 4
OTSIncAReportApp/3-ServiceCenter/DataOperation/DataAccess/ParticleData.cs

@@ -557,11 +557,23 @@ namespace OTSIncAReportApp.DataOperation.DataAccess
         }
 
         /// <summary>
-        /// 保留两位小数
+        /// 拼接颗粒
         /// </summary>
-        /// <param name="strData"></param>
+        /// <param name="lst_str"></param>
         /// <returns></returns>
-        private string ChangeDataToD(string strData)
+        public DataTable GetSplicingParticlesData()
+        {
+			DataTable particlesAll = GetSplicingParticles();
+			return particlesAll;
+		}
+
+
+		/// <summary>
+		/// 保留两位小数
+		/// </summary>
+		/// <param name="strData"></param>
+		/// <returns></returns>
+		private string ChangeDataToD(string strData)
         {
             Decimal dData = 0.00M;
             if (strData.Contains("E"))
@@ -588,7 +600,15 @@ namespace OTSIncAReportApp.DataOperation.DataAccess
             return DT;
         }
 
-        public DataTable GetInfoForPartucleDevidePage_analyticalParticle(string condition)
+        public DataTable GetSplicingParticles()
+        {
+			string sqliteString1 = "select * from MergedParticleInfo";
+			DataTable DT = new DataTable();
+			DT = dbHelper.ExecuteQuery(sqliteString1);
+			return DT;
+		}
+
+		public DataTable GetInfoForPartucleDevidePage_analyticalParticle(string condition)
         {
             string sqliteString = "select fieldid,particleid,AveGray,RectLeft,RectTop,RectWidth,RectHeight,Area,PosX,PosY,TypeId,SegmentNum,SEMPosX,SEMPosY,XrayId,DMAX,DMIN,DPERP,PERIMETER,ORIENTATION,DINSCR,DMEAN,DELONG,DFERET,TypeName,TypeColor,'' as Element from INcAData where xrayid > -1  and typeid !=9 and typeid !=-1 and typeid !=4" +
                 condition;