Răsfoiți Sursa

中间计量表bug

yangyj 1 an în urmă
părinte
comite
37ddada736

+ 3 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/FormData.java

@@ -115,6 +115,8 @@ public class FormData {
     private Boolean initReady=false;
     /**0表头表尾,1正文*/
     private Integer structure=0;
+    /**是否是每页的重复数据*/
+    private boolean isRepeat =false;
     /**
      * 元素和单元格的映射信息
      */
@@ -129,6 +131,7 @@ public class FormData {
     public Boolean isCurrentSubmitElement = false;
     public static final String CODE_REG = "[^:]+:[^:]+";
 
+
     /**
      * 打印调试信息
      */

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

@@ -82,10 +82,14 @@ public class ExecutorMeter extends FormulaExecutor {
     /*获取动态行最大行数,codeFind为相关元素码集合 */
     public Integer getLineSize(List<String> codeFind){
         int line=19;
-        Optional<FormData> formDataOp=  tec.getFormDataMap().values().stream().filter(e->e.executable()&& BaseUtils.inChain(codeFind,e.getFormula().getRely())).findAny();
-        if(formDataOp.isPresent()){
-            FormData target = formDataOp.get();
-           line= target.getCoordsList().size();
+        Optional<Integer> intOp=  tec.getFormDataMap().values().stream()
+                .filter(e->e.executable()&& BaseUtils.inChain(codeFind,e.getFormula().getRely())).map(e->e.getCoordsList().size())
+                .collect(Collectors.groupingBy(i -> i, Collectors.counting()))
+                .entrySet().stream()
+                .max(Map.Entry.comparingByValue())
+                .map(Map.Entry::getKey);
+        if(intOp.isPresent()){
+           line= intOp.get();
         }
         return line;
     }
@@ -146,20 +150,8 @@ public class ExecutorMeter extends FormulaExecutor {
 
     @Data
     public  class MaterialCalc implements Special{
-/*        private FormData index;
-        private FormData materialName;
-        private FormData unit;
-        private FormData meterAmount;
-        private FormData price;*/
         private FormData sum;
-       /* private FormData ratio;*/
         private FormData advancePayment;
-/*        private FormData source;
-        private FormData materialConform;
-        private FormData storagePlace;
-        private FormData storageStatus;
-        private FormData storageConform;
-        private FormData remark;*/
         /**材料合计*/
         private String total;
         /**预付款合计*/
@@ -792,6 +784,7 @@ public class ExecutorMeter extends FormulaExecutor {
                 BeanUtils.copyProperties(payment,imps);
                 imps.setItemName(payment.getName());
                 imps.setFormNumber(payment.getNumber());
+                imps.setCompleted(StringUtils.handleNull(payment.getCompleted()));
                 dataList.add(imps);
             }
             if(dataList.size()>0){
@@ -883,6 +876,8 @@ public class ExecutorMeter extends FormulaExecutor {
             FormData pageFd = fdm.get(FormulaUtils.getPageCode(clazz));
             if(pageFd!=null) {
                 int total = totalPage();
+                /*页面不重复*/
+                tec.getFormDataMap().values().stream().filter(e->e.executable()&& pageFd.getCode().equals(e.getFormula().getRely())).forEach(e->e.setRepeat(false));
                 String pageTmp = "第$1页 共" + total + "页";
                 pageFd.setValues(IntStream.rangeClosed(1, total).boxed().map(i -> new ElementData(pageTmp.replace("$1", i.toString()))).collect(Collectors.toList()));
             }

+ 5 - 9
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/TableElementConverter.java

@@ -368,12 +368,8 @@ public class TableElementConverter implements ITableElementConverter {
                          String coords =keyMap.get(fd.getKey());
                          if(Func.isNotBlank(coords)){
                              fd.flushCoords(coords);
-                           /*  List<Coords> coordsList = fd.getCoordsList();
-                             List<ElementData> eds = fd.getValues();
-                             for(Coords c:coordsList){
-                                 *//*预先初始化一页*//*
-                                 eds.add(new ElementData(c.getX(),c.getY()));
-                             }*/
+                             /*设置是否是每页公共数据*/
+                             fd.setRepeat(fd.getCoordsList().size()<2);
                          }
                      }
               }
@@ -478,9 +474,9 @@ public class TableElementConverter implements ITableElementConverter {
                    List<FormData> fds =group.get(report.getInitTableName());
                    if(fds.size()>0){
                        /*数据分两种,一种是每页都包含的公共部分,另一种是动态内容每页独立*/
-                       Map<Boolean,List<FormData>> groupList= fds.stream().collect(Collectors.partitioningBy(e->e.getCoordsList().size()>1));
-                       List<FormData> common = groupList.get(false);
-                       List<FormData> page =groupList.get(true);
+                       Map<Boolean,List<FormData>> groupList= fds.stream().collect(Collectors.partitioningBy(FormData::isRepeat));
+                       List<FormData> common = groupList.get(true);
+                       List<FormData> page =groupList.get(false);
                        if(common.size()>0){
                            Map<String,Object> commonMap=rt.getCommonData();
                            for(FormData fd:common){

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

@@ -90,7 +90,7 @@ public class FormulaDaoImpl implements IFormulaDao {
     @Override
     public Function<Long, MeterPeriodInfo> getInterimMeterPeriodFc() {
         return certificateId->{
-            String sql="select a.period_number periodNumber,a.sort ,b.print_date formPrintDate from  s_contract_meter_period a join s_interim_pay_certificate b on a.id=b.contract_period_id where a.is_deleted=0 and b.id="+certificateId;
+            String sql="select a.id, a.period_number periodNumber,a.sort ,b.print_date formPrintDate from  s_contract_meter_period a join s_interim_pay_certificate b on a.id=b.contract_period_id where a.is_deleted=0 and b.id="+certificateId;
             return this.jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<>(MeterPeriodInfo.class));
         };
     }