yangyj 1 tahun lalu
induk
melakukan
49f2cbb982

+ 22 - 12
blade-service/blade-manager/src/main/java/com/mixsmart/utils/FormulaUtils.java

@@ -1114,7 +1114,7 @@ public class FormulaUtils {
     }
 
 
-    public static void mainT(String[] args) throws IOException {
+    public static void mainT2(String[] args) throws IOException {
         XYSeries series = new XYSeries("每月实际完成");
         series.add(10.2, 1.82);
         series.add(11.9, 1.86);
@@ -1391,9 +1391,9 @@ public class FormulaUtils {
 
         // 创建图表
         JFreeChart chart = ChartFactory.createTimeSeriesChart(
-                "施工进度对比图",
-                "时间",
-                "完成量 (%)",
+                "",
+                "",
+                "",
                 dataset,
                 true,
                 true,
@@ -1403,7 +1403,7 @@ public class FormulaUtils {
         Font font = new Font("宋体", Font.PLAIN, 12);
         chart.getTitle().setFont(font);
         chart.getLegend().setItemFont(font);
-
+        chart.getLegend().setVisible(false);
         XYPlot plot = (XYPlot) chart.getPlot();
         plot.setDomainGridlinesVisible(true);
         plot.setRangeGridlinesVisible(true);
@@ -1413,15 +1413,15 @@ public class FormulaUtils {
 
         XYItemRenderer renderer = new XYSplineRenderer();
         // 设置第一个系列为实线
-        renderer.setSeriesPaint(0, Color.BLUE); // 设置颜色
+        renderer.setSeriesPaint(0, Color.GREEN); // 设置颜色
         renderer.setSeriesStroke(0, new BasicStroke(2.0f)); // 设置实线
 
         // 设置第二个系列为虚线
-        renderer.setSeriesPaint(1, Color.GREEN); // 设置颜色
+        renderer.setSeriesPaint(1, Color.BLUE); // 设置颜色
         renderer.setSeriesStroke(1, new BasicStroke(
-                0f,                          // 线宽
-                BasicStroke.CAP_ROUND,         // 端点样式
-                BasicStroke.JOIN_ROUND,        // 连接点样式
+                0.3f,                          // 线宽
+                BasicStroke.CAP_SQUARE,         // 端点样式
+                BasicStroke.JOIN_BEVEL,        // 连接点样式
                 0.0f,                          // 斜接长度
                 new float[]{10.0f, 10f},      // 虚线模式:10像素线,6像素空白
                 0.0f                           // 偏移量
@@ -1438,7 +1438,7 @@ public class FormulaUtils {
         monthAxis.setUpperBound(endDate);
         // 确保每个月都有一个标签
         monthAxis.setTickUnit(new DateTickUnit(DateTickUnitType.MONTH,1));
-        monthAxis.setVerticalTickLabels(true);
+        /*monthAxis.setVerticalTickLabels(true);*/
 
         // 设置Y轴的范围
         NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
@@ -1449,9 +1449,19 @@ public class FormulaUtils {
 
         return chart;
     }
-    public static void main2(String[] args) throws IOException {
+    public static void mainT(String[] args) throws IOException {
         LinkedHashMap<Integer,Double> actualProgress = new LinkedHashMap<>();
+        actualProgress.put(202311,5.0);
+        actualProgress.put(202312,10.2);
+        actualProgress.put(202401,14.99);
+        actualProgress.put(202402,19.7);
+        actualProgress.put(202403,23.6);
         LinkedHashMap<Integer,Double> plannedProgress = new LinkedHashMap<>();
+        plannedProgress.put(202311,3.0);
+        plannedProgress.put(202312,6.0);
+        plannedProgress.put(202401,8.0);
+        plannedProgress.put(202402,9.0);
+        plannedProgress.put(202403,12.0);
 
         JFreeChart chart = chartTest(actualProgress,plannedProgress,2023,2025);
 /*        try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {

+ 27 - 29
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorFormat.java

@@ -10,7 +10,6 @@ import org.springblade.manager.dto.ElementData;
 import org.springblade.manager.dto.FormData;
 import org.springblade.manager.entity.Formula;
 
-import java.math.BigDecimal;
 import java.util.*;
 import java.util.function.BiFunction;
 import java.util.stream.Collectors;
@@ -67,7 +66,9 @@ public class ExecutorFormat extends FormulaExecutor {
                 List<ElementData> la = c1.getValues();
                 List<ElementData> lb = c2.getValues();
                 if(la.size()>0&&lb.size()>0) {
-                    Set<String> mergeSet = IntStream.range(0, Math.min(la.size(), lb.size())).boxed().map(i -> coordsFc.apply(la.get(i),lb.get(i))).filter(s -> !StringPool.EMPTY.equals(s)).collect(Collectors.toSet());
+                    Set<String> mergeSet = IntStream.range(0, Math.min(la.size(), lb.size())).boxed()
+                            .map(i -> coordsFc.apply(la.get(i),lb.get(i))).filter(s -> !StringPool.EMPTY.equals(s))
+                            .collect(Collectors.toSet());
                     if (mergeSet.size() > 0) {
                         Set<String> set = tec.getMergeCellMaps().computeIfAbsent(tableName, k -> new HashSet<>());
                         set.addAll(mergeSet);
@@ -76,6 +77,18 @@ public class ExecutorFormat extends FormulaExecutor {
             });
         });
     }
+    /*2-6中期支付证书清单号、项目名*/
+    private   BiFunction<ElementData,ElementData,String> coordsFc26=(ea,eb)->{
+        String a= ea.stringValue();
+        if(a!=null&&!a.matches("^\\d+.+")||StringUtils.isNotEmpty(eb.getValue())&&eb.getValue().toString().contains("暂")){
+            if(StringUtils.isNotEmpty(eb.getValue())&&eb.getValue().toString().contains("暂")) {
+                ea.setValue(eb.getValue());
+                eb.setValue("");
+            }
+            return  ea.getIndex()+"@"+ea.getX()+"@"+ea.getY()+"@"+(eb.getX()+1)+"@"+eb.getY();
+        }
+        return StringPool.EMPTY;
+    };
     /*2-17 小计合计*/
    private   BiFunction<ElementData,ElementData,String> coordsFc217=(ea,eb)->{
        String name = eb.stringValue();
@@ -84,9 +97,15 @@ public class ExecutorFormat extends FormulaExecutor {
        }
        return StringPool.EMPTY;
     };
+
+   /*单元格合并集中处理*/
     public void mergeCell(){
-        /*中期支付证书清单号、项目名*/
-        FormData qdh= FormulaUtils.elementFindByCode(tec.formDataMap,"m_20240325154016_1772166597482381312:key_1").orElse(null);
+        /*2-6中期支付证书清单号、项目名*/
+        biColumnMerge("IPayCert:key_1","IPayCert:key_0","m_20240325154016_1772166597482381312",coordsFc26);
+        /*2-17 小计合计*/
+        biColumnMerge("MtAiv:key_1","MtAiv:key_2","m_20240222101754_1760489057181237248",coordsFc217);
+
+        /*FormData qdh= FormulaUtils.elementFindByCode(tec.formDataMap,"m_20240325154016_1772166597482381312:key_1").orElse(null);
         FormData xm= FormulaUtils.elementFindByCode(tec.formDataMap,"m_20240325154016_1772166597482381312:key_13").orElse(null);
         if(qdh!=null&&xm!=null){
             List<ElementData> la = qdh.getValues();
@@ -96,7 +115,7 @@ public class ExecutorFormat extends FormulaExecutor {
                     ElementData ea=la.get(i);
                     ElementData eb=lb.get(i);
                     String a= ea.stringValue();
-                    /*StringUtils.isNotEmpty(eb.getValue())&&eb.getValue().toString().contains("暂")*/
+                    *//*StringUtils.isNotEmpty(eb.getValue())&&eb.getValue().toString().contains("暂")*//*
                     if(a!=null&&!a.matches("^\\d+.+")||StringUtils.isNotEmpty(eb.getValue())&&eb.getValue().toString().contains("暂")){
                         if(StringUtils.isNotEmpty(eb.getValue())&&eb.getValue().toString().contains("暂")) {
                             ea.setValue(eb.getValue());
@@ -111,30 +130,9 @@ public class ExecutorFormat extends FormulaExecutor {
                     set.addAll(mergeSet);
                 }
             }
-        }
-        /*2-17 小计合计*/
-        biColumnMerge("MtAiv:key_1","MtAiv:key_2","m_20240222101754_1760489057181237248",coordsFc217);
-       /* FormulaUtils.beRelyFrom(tec.formDataMap,"MtAiv:key_1").findFirst().ifPresent(qh->{
-            FormulaUtils.beRelyFrom(tec.formDataMap,"MtAiv:key_2").findFirst().ifPresent(clmc->{
-                List<ElementData> la = qh.getValues();
-                List<ElementData> lb = clmc.getValues();
-                if(la.size()>0&&lb.size()>0) {
-                    Set<String> mergeSet = IntStream.range(0, Math.min(la.size(), lb.size())).boxed().map(i -> {
-                        ElementData ea = la.get(i);
-                        ElementData eb = lb.get(i);
-                        String name = eb.stringValue();
-                        if (("小计").equals(name) || ("合计").equals(name)) {
-                            return ea.getIndex() + "@" + ea.getX() + "@" + ea.getY() + "@" + (eb.getX() + 2) + "@" + eb.getY();
-                        }
-                        return StringPool.EMPTY;
-                    }).filter(s -> !StringPool.EMPTY.equals(s)).collect(Collectors.toSet());
-                    if (mergeSet.size() > 0) {
-                        Set<String> set = tec.getMergeCellMaps().computeIfAbsent("m_20240222101754_1760489057181237248", k -> new HashSet<>());
-                        set.addAll(mergeSet);
-                    }
-                }
-            });
-        });*/
+        }*/
+
+
     }
 
 

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorMeter.java

@@ -1615,7 +1615,7 @@ public class ExecutorMeter extends FormulaExecutor {
                     elementWriter.write(t,monthlyCount);
                 });
 
-                List<String> planMonthSum=new ArrayList<>();
+                List<String> planMonthSum;
                 LinkedHashMap<Integer,BigDecimal> planMonthMap=new LinkedHashMap<>();
                 LinkedHashMap<Integer,Double> plannedMap =new LinkedHashMap<>();
                 if(chapterSchedules!=null&&chapterSchedules.size()>0) {