Browse Source

电签信息

yangyj 11 months ago
parent
commit
98c5e98f9c

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

@@ -334,6 +334,8 @@ public class ExecutorMeter extends FormulaExecutor {
                  current = paymentList.stream().filter(e-> e.getSort().equals(tec.periodInfo.getSort())).collect(Collectors.toList());
                  /*累计到本期末*/
                  paymentsPeriodEnd=paymentList.stream().filter(e->e.getSort()<=tec.periodInfo.getSort()).collect(Collectors.toList());
+                 /*往期累计,本期支付,累计支付*/
+                 periodCount();
                  /*往期每章节的实际花费*/
                  Map<String,BigDecimal> previousMoney= this.moneySum.apply(previous);
                  /*当前计量期每章节的实际花费*/
@@ -389,6 +391,27 @@ public class ExecutorMeter extends FormulaExecutor {
             putOut();
         }
 
+        public void periodCount(){
+            if(paymentsPeriodEnd.size()>0){
+                FormData fd=tec.formDataMap.get(MeterPeriodInfo.TBN+":key_7");
+                if(fd!=null) {
+                    elementWriter.write(fd, paymentsPeriodEnd.stream().mapToDouble(p -> Double.parseDouble(p.getMoney())).sum());
+                }
+            }
+            if(current.size()>0){
+                FormData fd=tec.formDataMap.get(MeterPeriodInfo.TBN+":key_6");
+                if(fd!=null) {
+                    elementWriter.write(fd, current.stream().mapToDouble(p -> Double.parseDouble(p.getMoney())).sum());
+                }
+            }
+            if(previous.size()>0){
+                FormData fd=tec.formDataMap.get(MeterPeriodInfo.TBN+":key_4");
+                if(fd!=null) {
+                    elementWriter.write(fd, previous.stream().mapToDouble(p -> Double.parseDouble(p.getMoney())).sum());
+                }
+            }
+        }
+
 
     }
 
@@ -572,32 +595,6 @@ public class ExecutorMeter extends FormulaExecutor {
                 sis.setPayRatio(ratioFc.apply(sis.getCurrentPeriodEndPay(),sis.getChangeMoney()));
                 totalList.add(sis);
             });
-           /*for(Map.Entry<String,Summary> form:currentSummary.entrySet()){
-                SubprojectInterimPaymentSummary sis = new SubprojectInterimPaymentSummary();
-                Summary pre =preSummary.get(form.getKey());
-                Summary summary = form.getValue();
-                sis.setFormNumber(summary.getFormNumber());
-                sis.setItemName(summary.getItemName());
-                sis.setUnit(summary.getUnit());
-                sis.setContractTotal(summary.getContractTotal().toString());
-                sis.setChangeTotal(summary.getChangeTotal().toString());
-                sis.setContractMoney(summary.getContractMoney().toString());
-                sis.setChangeMoney(summary.getChangeMoney().toString());
-
-                sis.setCurrentPeriodCompleted(summary.getCompleted().toString());
-                sis.setCurrentPeriodPay(summary.getCurrentPeriodPay().toString());
-                *//*当前期和往期统计*//*
-                summary.merge(pre);
-                if(pre!=null){
-                    sis.setPreviousPeriodPay(pre.getMoney().toString());
-                    sis.setPreviousPeriodCompleted(pre.getCompleted().toString());
-                }
-                sis.setCompleted(summary.getCompleted().toString());
-                sis.setCurrentPeriodPay(summary.getCurrentPeriodPay().toString());
-                sis.setCurrentPeriodEndPay(summary.getCurrentPeriodEndPay().toString());
-                sis.setPayRatio(ratioFc.apply(sis.getCurrentPeriodEndPay(),sis.getChangeMoney()));
-                totalList.add(sis);
-            }*/
             LinkedHashMap<String,List<SubprojectInterimPaymentSummary>> chapterGroup= totalList.stream().collect(Collectors.groupingBy(e->getPrefix(e.getFormNumber()),LinkedHashMap::new,Collectors.toList()));
             AtomicInteger loop = new AtomicInteger(chapterGroup.size());
             chapterGroup.forEach((k,v)->{

+ 51 - 2
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java

@@ -2814,7 +2814,7 @@ public class TaskController extends BladeController {
                                 /*设置表头*/
                                 setTitle(sheet, tile);
                                 /*添加电签*/
-                                setDQInfo(sheet, rs.getUrl(), tile);
+                                setDQInfo(sheet, rs);
                                 //去掉表格虚线
                                 sheet.setPrintGridlines(false);
                                 //设置 整个工作表为一页
@@ -2900,7 +2900,7 @@ public class TaskController extends BladeController {
     }
 
     // 添加电签信息数据
-    public void setDQInfo(Sheet sheet, String htmlUrl, String title) {
+    public void setDQInfoOld(Sheet sheet, String htmlUrl, String title) {
         String file_path = "/www/wwwroot/Users/hongchuangyanfa/Desktop/";//CollectionUtils.getSysLocalFileUrl();
         // 添加电签关键字Id
         String sys_file_net_url = ParamCache.getValue(CommonConstant.SYS_FILE_NET_URL);
@@ -2970,7 +2970,56 @@ public class TaskController extends BladeController {
             throw new RuntimeException(e);
         }
     }
+    public void setDQInfo(Sheet sheet, ReportResult rs){
+        /*电签信息已经和坐标一起给出*/
+        /*具体获取方法在 FormulaUtils 里的 public static Map<String,String> getESignMap(Document document)*/
+        Map<String,String> signMap =rs.getESignMap();
+        if(signMap.size()>0) {
+            signMap.forEach((k, dqVal) -> {
+                try {
+                    String[] yx = k.split("_");
+                    if(yx.length>=2){
+                        int y1=Func.toInt(yx[0]);
+                        int x1=Func.toInt(yx[1]);
+                        Row row = sheet.getRow(y1 - 1);
+                        if (row != null) {
+                            Cell cell = row.getCell(x1 - 1);
+                            if (cell != null && ObjectUtil.isNotEmpty(cell)) {
+                                String dataInfo = cell.getStringCellValue();
+                                //调用方法设置字体样式到单元格中的指定字符
+                                Workbook workbook = cell.getSheet().getWorkbook();
+                                CellStyle cellStyle = workbook.createCellStyle();
+                                cellStyle.cloneStyleFrom(cell.getCellStyle());
+                                Font newFont = workbook.createFont();
+                                newFont.setFontHeightInPoints(workbook.getFontAt(cell.getCellStyle().getFontIndex()).getFontHeightInPoints());
+                                if (dataInfo == null || StringUtil.isEmpty(dataInfo)) {
+                                    cell.setCellValue(dqVal);
+                                    newFont.setFontHeightInPoints((short) 1);
+                                    newFont.setColor(IndexedColors.WHITE.getIndex());
+                                    cellStyle.setFont(newFont);
+                                } else {
+                                    String lastData = dataInfo + "*" + dqVal;
+                                    RichTextString richString = new XSSFRichTextString(lastData);
+                                    richString.clearFormatting();
+                                    richString.applyFont(0, dataInfo.length(), newFont);
+                                    newFont.setFontHeightInPoints((short) 1);
+                                    newFont.setColor(IndexedColors.WHITE.getIndex());
+                                    richString.applyFont(dataInfo.length(), lastData.length(), newFont);
+                                    cell.setCellValue(richString);
+                                }
+                                cell.setCellStyle(cellStyle);
+                            }
+                        }
+                    }
+                }catch (Exception e){
+                    e.printStackTrace();
+                }
 
+            });
+        }else{
+            System.out.println(rs.getName()+"未找到电签配置信息");
+        }
+    }
     @Data
     class Report {
         public final String[] REPORT_TYPE = new String[]{"s_interim_pay_certificate", "s_material_start_statement", "s_material_start_statement"};