Bladeren bron

计量相关

yangyj 1 jaar geleden
bovenliggende
commit
51119f01bb

+ 41 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ReportResult.java

@@ -1,6 +1,9 @@
 package org.springblade.manager.vo;
 
 import lombok.Data;
+import org.apache.poi.ss.usermodel.*;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringPool;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -25,7 +28,6 @@ public class ReportResult {
     private Long excelId;
     /**表名*/
     private String name;
-
     /**表名主键Id*/
     private Long pkeyId;
 
@@ -41,6 +43,8 @@ public class ReportResult {
     private Map<String,Object> commonData =new HashMap<>();
     /**电签信息*/
     private Map<String,String> eSignMap = new HashMap<>();
+    /**模板类型*/
+    private Integer modelType=MeterInfo.MB_GX;
 
     public String getPdfPath(){
         return this.pdfPath;
@@ -65,4 +69,40 @@ public class ReportResult {
         }
     }
 
+    public String createTitle(String projectName){
+        if(MeterInfo.MB_ZJ.equals(modelType)){
+            return projectName;
+        }else{
+            return this.name.contains("封面") ? projectName : projectName + StringPool.DASH +this.name;
+        }
+    }
+
+    public void setTitle(Sheet sheet, String name) {
+        if(MeterInfo.MB_ZJ.equals(modelType)){
+            for(int i=0;i<3;i++){
+                Row row = sheet.getRow(i);
+                if(row!=null){
+                    Cell cell = row.getCell(0);
+                    if (cell != null && Func.isBlank(cell.getStringCellValue())) {
+                        CellStyle style = cell.getCellStyle();
+                        style.setAlignment(HorizontalAlignment.CENTER);
+                        style.setVerticalAlignment(VerticalAlignment.CENTER);
+                        cell.setCellValue(name);
+                        return;
+                    }
+                }
+            }
+        }else{
+            Row row = sheet.getRow(0);
+            Cell cell = row.getCell(0);
+            if (cell != null) {
+                CellStyle style = cell.getCellStyle();
+                style.setAlignment(HorizontalAlignment.CENTER);
+                style.setVerticalAlignment(VerticalAlignment.CENTER);
+                cell.setCellValue(name);
+            }
+        }
+
+    }
+
 }

+ 11 - 8
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/SubprojectInterimPaymentSummary.java

@@ -70,29 +70,32 @@ public class SubprojectInterimPaymentSummary {
     @JSONField(name = "key_12",label="页码",ordinal = 101)
     private String pageCount;
     /**变更金额*/
-    @JSONField(name = "key_16",label="变更金额-ZJ",ordinal = 101)
+    @JSONField(name = "key_16",label="变更金额-ZJ",ordinal = 12)
     private String adjustmentAmount;
     /**单项占合同价*/
-    @JSONField(name = "key_17",label="单项占合同价-ZJ",ordinal = 101)
+    @JSONField(name = "key_17",label="单项占合同价-ZJ",ordinal = 12)
     private String itemPercent;
     /**单项计划完成*/
-    @JSONField(name = "key_18",label="单项计划完成-ZJ",ordinal = 101)
+    @JSONField(name = "key_18",label="单项计划完成-ZJ",ordinal = 12)
     private String itemProgress;
     /**单项计划完成*/
-    @JSONField(name = "key_19",label="本期占该合同金额-ZJ",ordinal = 101)
+    @JSONField(name = "key_19",label="本期占该合同金额-ZJ",ordinal = 12)
     private String currentPayPercent;
     /**本期末累计占变更后的总金额*/
-    @JSONField(name = "key_20",label="本期末累计占变更后的总金额-ZJ",ordinal = 101)
+    @JSONField(name = "key_20",label="本期末累计占变更后的总金额-ZJ",ordinal = 12)
     private String payPercent;
     /**本期末累计占变更后的总金额*/
-    @JSONField(name = "key_21",label="按月计划与实际完成-ZJ",ordinal = 101)
+    @JSONField(name = "key_21",label="按月计划与实际完成-ZJ",ordinal = 12)
     private List<List<Payment>> monthlyCompletion = new ArrayList<>() ;
     /**累计实际完成*/
-    @JSONField(name = "key_22",label="累计实际完成-ZJ",ordinal = 101)
+    @JSONField(name = "key_22",label="累计实际完成-ZJ",ordinal = 12)
     private String actualCompletion;
     /**本次实际完成*/
-    @JSONField(name = "key_23",label="本次实际完成-ZJ",ordinal = 101)
+    @JSONField(name = "key_23",label="本次实际完成-ZJ",ordinal = 12)
     private String currentCompletion;
+    /**合同概要*/
+    @JSONField(name = "key_24",label="合同概要-ZJ",ordinal = 16)
+    private String contractSummary;
 
 
     public SubprojectInterimPaymentSummary(String itemName) {

+ 7 - 3
blade-service/blade-manager/src/main/java/com/mixsmart/utils/FormulaUtils.java

@@ -119,7 +119,7 @@ public class FormulaUtils {
             Map<String, Object> variable = new HashMap<>(tec.constantMap);
             @SuppressWarnings("unchecked")
             Map<String,Object> em= (Map<String, Object>) variable.computeIfAbsent(E, k->new HashMap<>());
-            int index= new ArrayList<>(tip.values()).get(0).getIndex();
+            Integer index= new ArrayList<>(tip.values()).get(0).getIndex();
             for(Map.Entry<String,ElementData> se:tip.entrySet()){
                 Object value=se.getValue().getValue();
                 if(CustomFunction.isNumber(value)){
@@ -259,7 +259,7 @@ public class FormulaUtils {
     public  static void write(FormData fd, Object data){
         write(fd,data,false);
     }
-    public  static void write(FormData fd, Object data,Boolean nullOrBlank ){
+    public  static void write(FormData fd, Object data,Boolean retainEmpty ){
         if(Func.isEmpty(fd.getValues())){
             /*无定位信息不写入*/
             return;
@@ -273,7 +273,7 @@ public class FormulaUtils {
             fd.getValues().forEach(t->t.setValue(null));
             if(data instanceof List){
                 List<Object> values = (List<Object>) data;
-                if(!nullOrBlank){
+                if(!retainEmpty){
                     /*不包含空白内容*/
                     values=values.stream().filter(StringUtils::isNotEmpty).collect(Collectors.toList());
                 }
@@ -1378,6 +1378,10 @@ public static Map<String,List<Long>> relatedPages(List<FormData> curFormDatas ,L
     public static  Stream<FormData>  beRelyFrom( Map<String, FormData> formDataMap ,String code){
         return formDataMap.values().stream().filter(e->e.executable()&& code.equals(e.getFormula().getRely()));
     }
+    public static  Stream<FormData>  beRelyFrom( Map<String, FormData> formDataMap ,String tableNumber ,String keys){
+        Set<String> keySet = Arrays.stream(keys.split(",")).map(s->tableNumber+":"+s.trim()).collect(Collectors.toSet());
+        return formDataMap.values().stream().filter(e->e.executable()&& keySet.contains(e.getFormula().getRely()));
+    }
     /*根据code查找元素 */
     public static  Optional<FormData>  elementFindByCode( Map<String, FormData> formDataMap ,String code){
         return formDataMap.values().stream().filter(e->code.equals(e.getCode())).findAny();

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

@@ -1,5 +1,6 @@
 package org.springblade.manager.formula.impl;
 
+import com.mixsmart.utils.CustomFunction;
 import com.mixsmart.utils.FormulaUtils;
 import com.mixsmart.utils.StringUtils;
 import lombok.Data;
@@ -61,7 +62,7 @@ public class ExecutorMeter extends FormulaExecutor {
         if(BigDecimal.ZERO.compareTo(bBd)==0){
             return "0.0";
         }
-        return  aBd.multiply(new BigDecimal(100)).divide(bBd, 2, RoundingMode.HALF_UP).toString();
+        return  aBd.multiply(new BigDecimal(100)).divide(bBd, 6, RoundingMode.HALF_UP).toString();
     };
 
    /**根据清单编号获取支付项目章节编号*/
@@ -468,6 +469,7 @@ public class ExecutorMeter extends FormulaExecutor {
     @EqualsAndHashCode(callSuper = true)
     public  class SubIPaySum extends   BaseSpecial<SubprojectInterimPaymentSummary> implements Special{
         /*分项工程中期支付汇总表*/
+        /*施工进度表*/
         @Override
         public boolean ready() {
             return current.size()>0;
@@ -551,13 +553,7 @@ public class ExecutorMeter extends FormulaExecutor {
                     ));
         }
 
-        public SubprojectInterimPaymentSummary createSis(Summary sum){
-            SubprojectInterimPaymentSummary sis = new SubprojectInterimPaymentSummary();
-            sis.setFormNumber(sum.getFormNumber());
-            sis.setItemName(sum.getItemName());
-            sis.setUnit(sum.getUnit());
-            return sis;
-        }
+
        /*分项工程中期支付汇总表*/
         @Override
         public void parse() {
@@ -665,8 +661,10 @@ public class ExecutorMeter extends FormulaExecutor {
                 });
                 /*实际完成,累计完成、按月完成*/
                 List<List<List<Payment>>> all =totalList.stream().map(SubprojectInterimPaymentSummary::getMonthlyCompletion).collect(Collectors.toList());
-                FormulaUtils.beRelyFrom(fdm,SubprojectInterimPaymentSummary.TBN+":key_22").forEach(e->e.setRepeat(true));
+                /*FormulaUtils.beRelyFrom(fdm,SubprojectInterimPaymentSummary.TBN+":key_22").forEach(e->e.setRepeat(true));
                 FormulaUtils.beRelyFrom(fdm,SubprojectInterimPaymentSummary.TBN+":key_23").forEach(e->e.setRepeat(true));
+                FormulaUtils.beRelyFrom(fdm,SubprojectInterimPaymentSummary.TBN+":key_24").forEach(e->e.setRepeat(true));*/
+                FormulaUtils.beRelyFrom(fdm,SubprojectInterimPaymentSummary.TBN,"key_22,key_23,key_24").forEach(e->e.setRepeat(true));
                 /*每月合计进度*/
                 List<String> monthlySum= IntStream.range(0,max).boxed().map(month->{
                     List<Payment> tmp=  all.stream().flatMap(row->row.get(month).stream()).collect(Collectors.toList());
@@ -681,6 +679,10 @@ public class ExecutorMeter extends FormulaExecutor {
                     elementWriter.write(t, monthlySum.stream().map(e->{double r=BaseUtils.obj2DoubleZero(e)- cp.get();
                         cp.set(BaseUtils.obj2DoubleZero(e));return r;}).collect(Collectors.toList()));
                 });
+                /*合同概要*/
+                FormulaUtils.elementFindByCode(fdm,SubprojectInterimPaymentSummary.TBN+":key_24").ifPresent(t->{
+                    elementWriter.write(t,"开工日期:"+baseInfo.getStartDatePlan()+" 始算工期日:"+baseInfo.getStartDate()+" 合同完成日期:"+baseInfo.getEndDatePlan()+" 合同期限$4天 时间延长$5天 修改后合同期限"+ CustomFunction.daysPassed(baseInfo.getStartDate(),baseInfo.getEndDate()) +"天(即至"+baseInfo.getEndDate()+")\n 合同总价"+baseInfo.getContractAmount().divide(new BigDecimal(10000),2,RoundingMode.HALF_UP)+"万元、暂定金$9万元、工程量清单金额$10万元、BG估计最终金额$11万元");
+                });
 
             }else{
                 LinkedHashMap<String,List<SubprojectInterimPaymentSummary>> chapterGroup= totalList.stream().collect(Collectors.groupingBy(e->getPrefix(e.getFormNumber()),LinkedHashMap::new,Collectors.toList()));

+ 4 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/TableElementConverter.java

@@ -489,6 +489,10 @@ public class TableElementConverter implements ITableElementConverter {
                    rt.setName(report.getNodeName());
                    rt.setExcelId(report.getExcelId());
                    rt.setPkeyId(report.getPKeyId()); //返回表单的主表Id
+                   if(meterInfo.getConfig()!=null){
+                       /*设置模版类型 广西、浙江或者其他*/
+                       rt.setModelType(meterInfo.getConfig());
+                   }
                    reportResults.add(rt);
                    List<FormData> fds =group.get(report.getInitTableName());
                    if(fds.size()>0){

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

@@ -1480,7 +1480,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                 fd.setUpdate(1);
             }
         }else {
-            FormulaUtils.write(fd, data, fd.getIsRemoveEmpty());
+            FormulaUtils.write(fd, data, !fd.getIsRemoveEmpty());
         }
     }
 

+ 9 - 21
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java

@@ -52,6 +52,7 @@ import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.entity.ContractRelationJlyz;
 import org.springblade.manager.entity.TextdictInfo;
 import org.springblade.manager.feign.FormulaClient;
+import org.springblade.manager.vo.MeterInfo;
 import org.springblade.manager.vo.ReportResult;
 import org.springblade.meter.dto.*;
 import org.springblade.meter.entity.*;
@@ -2771,7 +2772,8 @@ public class TaskController extends BladeController {
                         PdfCopy pdfCopy = new PdfCopy(doc, new FileOutputStream(rs.getPdfPath()));
                         int pageCount;
                         doc.open();
-                        String tile = rs.getName().contains("封面") ? projectName : projectName + StringPool.DASH + rs.getName();
+                       /* String tile = rs.getName().contains("封面") ? projectName : projectName + StringPool.DASH + rs.getName();*/
+                        String title = rs.createTitle(projectName);
                         /*把公共部分内容释放到每一页*/
                         rs.putCommon();
                         for (Map<String, Object> dataMap : rs.getData()) {
@@ -2811,9 +2813,9 @@ public class TaskController extends BladeController {
                                     }
                                 }
                                 /*设置表头*/
-                                setTitle(sheet, tile);
+                                rs.setTitle(sheet, title);
                                 /*添加电签*/
-                                setDQInfo(sheet,rs,tile);
+                                setDQInfo(sheet,rs,title);
                                 //去掉表格虚线
                                 sheet.setPrintGridlines(false);
                                 //设置 整个工作表为一页
@@ -2821,7 +2823,7 @@ public class TaskController extends BladeController {
                                 sheet.getPrintSetup().setPaperSize(PrintSetup.A4_PAPERSIZE);
                                 ByteArrayOutputStream out = new ByteArrayOutputStream();
                                 workbook.write(out);
-                                // workbook.write(new FileOutputStream(rs.getExcelPath()));
+                                workbook.write(new FileOutputStream(rs.getExcelPath()));
                                 com.aspose.cells.Workbook wb = new com.aspose.cells.Workbook(new ByteArrayInputStream(out.toByteArray()));
                                 out.reset();
                                 wb.save(out, SaveFormat.PDF);
@@ -2868,6 +2870,8 @@ public class TaskController extends BladeController {
         return R.data(fileUrl);
     }
 
+
+
     // 添加电签任务列表
     public void addSignTaskBatch(Report report){
         // 修改个人电签状态
@@ -2882,23 +2886,7 @@ public class TaskController extends BladeController {
         jdbcTemplate.execute(sql);
     }
 
-    public void setTitle(Sheet sheet, String name) {
-        Row row = sheet.getRow(0);
-        Cell cell = row.getCell(0);
-        if (cell != null) {
-            /* Workbook workbook = sheet.getWorkbook();*/
-            /* Font font = workbook.createFont();*/
-            CellStyle style = cell.getCellStyle();
-/*            font.setFontName("黑体"); // 设置字体名称
-            font.setFontHeightInPoints((short) 20); // 设置字号为20*/
-            /*CellStyle style = workbook.createCellStyle();*/
-            /*style.setFont(font); // 将字体应用到样式中*/
-            style.setAlignment(HorizontalAlignment.CENTER);
-            style.setVerticalAlignment(VerticalAlignment.CENTER);
-            cell.setCellValue(name);
-            /*cell.setCellStyle(style);*/
-        }
-    }
+
 
     // 添加电签信息数据
     public void setDQInfo(Sheet sheet, ReportResult rs,String title){