Browse Source

处理科学计数法无法导出报告的问题

cxs 3 years ago
parent
commit
2e63f08fd6

+ 22 - 3
OTSIncAReportApp/3-ServiceCenter/DataOperation/DataAccess/ParticleData.cs

@@ -356,7 +356,7 @@ namespace OTSIncAReportApp.DataOperation.DataAccess
         public Particle GetParticleByFidAndPid(string fieldid, string particleid)
         {
             string sqlp = @"select *,(select xraydata from xraydata where xrayindex=INcAData.xrayid and fieldid="
-            + fieldid + ") as XRayData,(select group_concat(name || '-' || Percentage, ';')from ElementChemistry where XRayId = INcAData.XRayId and fieldid ="
+            + fieldid + ") as XRayData,(select group_concat(name || '_' || Percentage, ';')from ElementChemistry where XRayId = INcAData.XRayId and fieldid ="
             + fieldid + ") as Element from INcAData where fieldid="
             + fieldid + " and particleid= " + particleid;
 
@@ -372,7 +372,7 @@ namespace OTSIncAReportApp.DataOperation.DataAccess
                 {
                     if (element.Split(';')[i] != "")
                     {
-                        Element ele = new Element() { Name = element.Split(';')[i].Split('-')[0], Percentage = Convert.ToDouble(element.Split(';')[i].Split('-')[1]) };
+                        Element ele = new Element() { Name = element.Split(';')[i].Split('_')[0], Percentage = Convert.ToDouble(element.Split(';')[i].Split('_')[1]) };
                         ElementList.Add(ele);
                     }
                 }
@@ -454,7 +454,7 @@ namespace OTSIncAReportApp.DataOperation.DataAccess
                 string ConcatenatedString = "";
                 for (int j = 0; j < drs.Length; j++)
                 {
-                    ConcatenatedString += drs[j]["name"] + "-" + drs[j]["Percentage"] + ';';
+                    ConcatenatedString += drs[j]["name"] + "-" + ChangeDataToD(drs[j]["Percentage"].ToString()) + ';';
                 }
                 particlesAll.Rows[i]["Element"] = ConcatenatedString;
             }
@@ -465,6 +465,25 @@ namespace OTSIncAReportApp.DataOperation.DataAccess
             //DataTable dt = dbHelper.ExecuteQuery(sqlliteString);
             return particlesAll;
         }
+
+        /// <summary>
+        /// 保留两位小数
+        /// </summary>
+        /// <param name="strData"></param>
+        /// <returns></returns>
+        private string ChangeDataToD(string strData)
+        {
+            Decimal dData = 0.00M;
+            if (strData.Contains("E"))
+            {
+                dData = Convert.ToDecimal(Decimal.Parse(strData.ToString(), System.Globalization.NumberStyles.Float));
+            }
+            else
+            {
+                return Convert.ToDouble(strData).ToString("0.00");
+            }
+            return Convert.ToDouble(dData).ToString("0.00");
+        }
         public DataTable GetInfoForPartucleDevidePage2(string condition)
         {
             string sqliteString = "select fieldid,particleid,AveGray,RectLeft,RectTop,RectWidth,RectHeight,Area,PosX,PosY,TypeId,SegmentNum,FieldPosX as 'SEMPosX',FieldPosY as 'SEMPosY',XrayId,DMAX,DMIN,DPERP,PERIMETER,ORIENTATION,DINSCR,DMEAN,DELONG,DFERET,TypeName,TypeColor,SubParticles, (select group_concat(name || '-' || Percentage, ';') from ElementChemistry where XRayId = MergedParticleInfo.XRayId and fieldid = MergedParticleInfo.fieldid) as Element from MergedParticleInfo where 1=1 " + condition + " union 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 SubParticles,'' as Element from INcAData where xrayid > -1 and instr(','||(select ifnull(group_concat(SubParticles, ','),'') from MergedParticleInfo)|| ',',',' || fieldid || ':' || particleid || ',')= 0 " + condition;