Kaynağa Gözat

Merge branch 'develop3.0' of http://106.12.23.251:10080/TEAMMODEL/TEAMModelOS into develop3.0

李思淳 5 yıl önce
ebeveyn
işleme
78ad029bcb

+ 82 - 22
TEAMModelOS.Service/Services/PowerPoint/Implement/ShapeGenerator.cs

@@ -356,10 +356,23 @@ namespace HiTeachCC.Service.PowerPoint.Implement
                     break;
                 case "mc:AlternateContent": //Equations and formulas as Image  处理公式 方程等
                     var mcFallbackNode = node.GetTextByPath("mc:Fallback/p:sp");
-                    Item mcitem = await ProcessSpNode(mcFallbackNode, order, warpObj);
-                    if (mcitem != null)
+                    if (mcFallbackNode != null)
                     {
-                        items.Add(mcitem);
+                        Item mcitem = await ProcessSpNode(mcFallbackNode, order, warpObj);
+                        if (mcitem != null)
+                        {
+                            items.Add(mcitem);
+                        }
+                    }
+                    else {
+                        mcFallbackNode = node.GetTextByPath("mc:Fallback/p:pic");
+                        if (mcFallbackNode != null) {
+                            Item mcPicitem = await ProcessPicNode(mcFallbackNode, order, warpObj);
+                            if (mcPicitem != null)
+                            {
+                                items.Add(mcPicitem);
+                            }
+                        }
                     }
                     break;
                 default:
@@ -410,14 +423,14 @@ namespace HiTeachCC.Service.PowerPoint.Implement
                 switch (graphicTypeUri.Value)
                 {
                     case "http://schemas.openxmlformats.org/drawingml/2006/table":
-                        Table table=  await GenTable(node,   order, warpObj);
+                        Table table=  await GenTable(node, order, warpObj);
                         items.Add(table);
                         break;
                     case "http://schemas.openxmlformats.org/drawingml/2006/chart":
                         items.Add(GenChart(node, order, warpObj));
                         break;
                     case "http://schemas.openxmlformats.org/drawingml/2006/diagram":
-                        result = GenDiagram(node, warpObj);
+                        await GenDiagram(items, node, order, warpObj);
                         break;
                     default:
                         break;
@@ -426,9 +439,55 @@ namespace HiTeachCC.Service.PowerPoint.Implement
             return result;
         }
 
-        public string GenDiagram(XmlNode node, WarpObj warpObj)
+        public async Task  GenDiagram(List<Item> items,  XmlNode node, int order, WarpObj warpObj)
         {
-            return "";
+            var xfrmNode = node.GetTextByPath("p:xfrm");
+            var dgmRelIds = node.GetTextByPath("a:graphic/a:graphicData/dgm:relIds");
+            var dgmClrFileId = dgmRelIds.GetTextByPath("@r:cs");
+            var dgmDataFileId = dgmRelIds.GetTextByPath("@r:dm");
+            var dgmLayoutFileId = dgmRelIds.GetTextByPath("@r:lo");
+            var dgmQuickStyleFileId = dgmRelIds.GetTextByPath("@r:qs");
+            var dgmClrFileName = warpObj.slideResObj[dgmClrFileId.Value]["target"];
+            var dgmDataFileName = warpObj.slideResObj[dgmDataFileId.Value]["target"];
+            var dgmLayoutFileName = warpObj.slideResObj[dgmLayoutFileId.Value]["target"];
+            var dgmQuickStyleFileName = warpObj.slideResObj[dgmQuickStyleFileId.Value]["target"];
+            var dgmClr = warpObj.zip.GetTextByPath("//pkg:part[@pkg:name='" + dgmClrFileName + "']"); 
+            var dgmData = warpObj.zip.GetTextByPath("//pkg:part[@pkg:name='" + dgmDataFileName + "']");   
+            var dgmLayout = warpObj.zip.GetTextByPath("//pkg:part[@pkg:name='" + dgmLayoutFileName + "']");  
+            var dgmQuickStyle = warpObj.zip.GetTextByPath("//pkg:part[@pkg:name='" + dgmQuickStyleFileName + "']");
+            var dgmDrwFileName = "";
+            var dataModelExt =  dgmData.GetTextByPath("pkg:xmlData/dgm:dataModel/dgm:extLst/a:ext/dsp:dataModelExt");
+            if (dataModelExt != null) {
+                var dgmDrwFileId = dataModelExt.GetTextByPath("@relId");
+                dgmDrwFileName = warpObj.slideResObj[dgmDrwFileId.Value]["target"];
+            }
+            XmlNode dgmDrwFile=null ;
+            if (dgmDrwFileName != "")
+            {
+                dgmDrwFile = warpObj.zip.GetTextByPath("//pkg:part[@pkg:name='" + dgmDrwFileName + "']");
+            }
+            var dgmDrwSpArray = dgmDrwFile.GetTextByPathList("pkg:xmlData/dsp:drawing/dsp:spTree/dsp:sp");
+            if (dgmDrwSpArray !=null)
+            {
+                Group group = new Group();
+                group.Position = ShapeHelper.GetPosition(xfrmNode, null, null);
+                group.Type = "Diagram";
+                group.Index = order++;
+                // Procsee all child nodes
+                List<Item> gpIterm = new List<Item>();
+                XmlDocument nodeDoc = new XmlDocument();
+                var dgmDrwSpArrayLen = dgmDrwSpArray.Count;
+                for (var i = 0; i < dgmDrwSpArrayLen; i++)
+                {
+                    var dspSp = dgmDrwSpArray.Item(i);
+                    var pSpStr = dspSp.OuterXml.Replace("dsp:", "p:").Replace("xmlns:dsp=\"http://schemas.microsoft.com/office/drawing/2008/diagram\"", "xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\"");
+                    nodeDoc.LoadXml(pSpStr);
+                    //await ProcessSpNode(nodeDoc,order,warpObj);
+                    await ProcessNodesInSlide(gpIterm, nodeDoc.FirstChild.Name, nodeDoc.FirstChild, order, warpObj);
+                }
+                group.Shapes = gpIterm;
+                items.Add(group);
+            }
         }
 
         public  Chart  GenChart(XmlNode node,int order , WarpObj warpObj)
@@ -512,7 +571,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
                     XmlNodeList serNodes = null;
                     switch (key)
                     {
-                        //break块不可以随意更换,此条件用于归类不同从Chart
+                        //break块不可以随意更换,此条件用于归类不同从Chart
                         case "pieChart":
                         case "ofPieChart":
                         case "pie3DChart":
@@ -582,7 +641,7 @@ namespace HiTeachCC.Service.PowerPoint.Implement
                                     {
                                         colChart.Is3D = true;
                                     }
-                                    colChart.ColType = key;
+                                    colChart.ColType = key.Replace("bar","col");
                                     var ColGrouping = nodeChild.GetTextByPath("c:grouping/@val");
                                     if (ColGrouping != null)
                                     {
@@ -1265,14 +1324,14 @@ namespace HiTeachCC.Service.PowerPoint.Implement
             else if (custShapType != null)
             {
                 XmlNode pathLstNode = custShapType.GetTextByPath("a:pathLst");
-                XmlNode pathNode = pathLstNode.GetTextByPath("a:path");
-                var maxX = 0.0;
-                var maxY = 0.0;
-                if (pathLstNode != null)
-                {
-                    maxX = double.Parse(pathNode.GetTextByPath("@w").Value) * px96 / px914400;
-                    maxY = double.Parse(pathNode.GetTextByPath("@h").Value) * px96 / px914400;
-                }
+                //XmlNode pathNode = pathLstNode.GetTextByPath("a:path");
+                //var maxX = 0.0;
+                //var maxY = 0.0;
+                //if (pathLstNode != null)
+                //{
+                //    maxX = double.Parse(pathNode.GetTextByPath("@w").Value) * px96 / px914400;
+                //    maxY = double.Parse(pathNode.GetTextByPath("@h").Value) * px96 / px914400;
+                //}
                 var closeNode = pathLstNode.GetTextByPath("a:path/a:close");
                 var startPoint = pathLstNode.GetTextByPath("a:path/a:moveTo/a:pt");
                 var spX = 96.0;
@@ -1346,11 +1405,12 @@ namespace HiTeachCC.Service.PowerPoint.Implement
                     }
                     if (childNode.Name.Equals("a:arcTo"))
                     {
-                        XmlNodeList nodeList = childNode.ChildNodes;
-                        var wR = double.Parse(nodeList.Item(0).GetTextByPath("@wR").Value) * px96 / px914400;
-                        var hR = double.Parse(nodeList.Item(0).GetTextByPath("@hR").Value) * px96 / px914400;
-                        var stAng = double.Parse(nodeList.Item(0).GetTextByPath("@stAng").Value) * px96 / px914400;
-                        var swAng = double.Parse(nodeList.Item(0).GetTextByPath("@swAng").Value) * px96 / px914400;
+                        
+                        
+                        var wR = double.Parse(childNode.GetTextByPath("@wR").Value) * px96 / px914400;
+                        var hR = double.Parse(childNode.GetTextByPath("@hR").Value) * px96 / px914400;
+                        var stAng = double.Parse(childNode.GetTextByPath("@stAng").Value) * px96 / px914400;
+                        var swAng = double.Parse(childNode.GetTextByPath("@swAng").Value) * px96 / px914400;
                         var endAng = stAng + swAng;
                         d += ShapeSvg.ShapeArc(wR, hR, wR, hR, stAng, endAng, false);
                         //Paths.Add(new ArcToPath() { 

+ 9 - 9
TEAMModelOS.Service/Services/PowerPoint/Implement/ShapeHelper.cs

@@ -810,7 +810,7 @@ namespace TEAMModelOS.Service.Services.PowerPoint.Implement
                 var green = (defBultColorValsG.Value.IndexOf("%") != -1) ? defBultColorValsG.Value.Split("%").First() : defBultColorValsG.Value;
                 var blue = (defBultColorValsB.Value.IndexOf("%") != -1) ? defBultColorValsB.Value.Split("%").First() : defBultColorValsB.Value;
                 var scrgbClr = red + "," + green + "," + blue;
-                Color = ToHex(255 * (double.Parse(red) / 100)) + ToHex(255 * (double.Parse(green) / 100)) + ToHex(255 * (double.Parse(blue) / 100));
+                Color = ToHex(255 * (int.Parse(red) / 100)) + ToHex(255 * (int.Parse(green) / 100)) + ToHex(255 * (int.Parse(blue) / 100));
                 //console.log("scrgbClr: " + scrgbClr);
 
             }
@@ -828,9 +828,9 @@ namespace TEAMModelOS.Service.Services.PowerPoint.Implement
                 var defBultColorVals_hue = PowerPointHelper.GetTextByPath(defBultColorVals, "@hue");
                 var defBultColorVals_sat = PowerPointHelper.GetTextByPath(defBultColorVals, "@sat");
                 var defBultColorVals_lum = PowerPointHelper.GetTextByPath(defBultColorVals, "@lum");
-                var hue = double.Parse(defBultColorVals_hue.Value) / 100000;
-                var sat = double.Parse((defBultColorVals_sat.Value.IndexOf("%") != -1) ? defBultColorVals_sat.Value.Split("%").First() : defBultColorVals_sat.Value) / 100;
-                var lum = double.Parse((defBultColorVals_lum.Value.IndexOf("%") != -1) ? defBultColorVals_lum.Value.Split("%").First() : defBultColorVals_lum.Value) / 100;
+                var hue = int.Parse(defBultColorVals_hue.Value) / 100000;
+                var sat = int.Parse((defBultColorVals_sat.Value.IndexOf("%") != -1) ? defBultColorVals_sat.Value.Split("%").First() : defBultColorVals_sat.Value) / 100;
+                var lum = int.Parse((defBultColorVals_lum.Value.IndexOf("%") != -1) ? defBultColorVals_lum.Value.Split("%").First() : defBultColorVals_lum.Value) / 100;
                 var hslClr = defBultColorVals_hue.Value.ToString() + "," + defBultColorVals_sat.Value.ToString() + "," + defBultColorVals_lum.Value.ToString();
                 var hsl2rgb = HslToRgb(hue, sat, lum);
                 Color = ToHex(hsl2rgb.r) + ToHex(hsl2rgb.g) + ToHex(hsl2rgb.b);
@@ -851,16 +851,16 @@ namespace TEAMModelOS.Service.Services.PowerPoint.Implement
 
 
 
-        public static string ToHex(dynamic n)
+        public static string ToHex(int n)
         {
-            string hex = n.toString(16);
+            string hex= Convert.ToString(n, 16);
             while (hex.Length < 2) { hex = "0" + hex; }
             return hex;
         }
 
-        public static dynamic HslToRgb(double hue, double sat, double light)
+        public static dynamic HslToRgb(int hue, int sat, int light)
         {
-            double t1, t2, r, g, b;
+            int t1, t2, r, g, b;
             hue /= 60;
             if (light <= 0.5)
             {
@@ -877,7 +877,7 @@ namespace TEAMModelOS.Service.Services.PowerPoint.Implement
             return new { r, g, b };
         }
 
-        public static double HueToRgb(double t1, double t2, double hue)
+        public static int HueToRgb(int t1, int t2, int hue)
         {
             if (hue < 0) hue += 6;
             if (hue >= 6) hue -= 6;

Dosya farkı çok büyük olduğundan ihmal edildi
+ 1074 - 1074
TEAMModelOS.Service/Services/PowerPoint/Implement/ShapeSvg.cs


+ 8 - 6
TEAMModelOS/Controllers/Analysis/AchievementController.cs

@@ -820,7 +820,7 @@ namespace TEAMModelOS.Controllers.Analysis
                     });
                 });
                 double fieldPersent = fieldPoint / TotalPoint;
-                fper.Add((fieldPersent * 100).ToString("0")+"%");
+                fper.Add(fieldPersent .ToString("0.00"));
             }
             //求单个知识点所占分数
             List<string> per = new List<string>();
@@ -987,10 +987,10 @@ namespace TEAMModelOS.Controllers.Analysis
                         }                       
                     }
                     double classPser = anwCPoint / cpo;
-                    knowledgeClass.Add((classPser * 100).ToString("0")+"%");                    
+                    knowledgeClass.Add(classPser.ToString("0.00"));                    
                 }                
                 classMap.Add(knowledgeName[k], knowledgeClass);          
-                per.Add((persent* 100).ToString("0")+"%");
+                per.Add(persent.ToString("0.00"));
 
             }
             knowledgeMap.Add("grade", knowPer);
@@ -998,10 +998,12 @@ namespace TEAMModelOS.Controllers.Analysis
             classMap.Add("className", className);
             wrongMap.Add("keys", keyWrong);
             wrongMap.Add("datas", wrongPersent);
-            knowledgeALL.Add("per", per);
+            knowledgeALL.Add("pointList", knowledgeName);
+            knowledgeALL.Add("per", per);            
+            knowledgeALL.Add("level", areaName);
             knowledgeALL.Add("fper", fper);
-            knowledgeALL.Add("stuPersent", knowledgeMap);
-            knowledgeALL.Add("classPersent", classMap);
+            knowledgeALL.Add("stupercent", knowledgeMap);
+            knowledgeALL.Add("classpercent", classMap);
             knowledgeALL.Add("wrong", wrongMap);
             builder.Data(knowledgeALL);