Bladeren bron

183 2-7计量公式

chenr 3 maanden geleden
bovenliggende
commit
de42db948d

+ 18 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -43,6 +43,7 @@ import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.oss.model.BladeFile;
+import org.springblade.core.redis.cache.BladeRedis;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
@@ -55,10 +56,7 @@ import org.springblade.manager.enums.ExecuteType;
 import org.springblade.manager.mapper.ExcelTabMapper;
 import org.springblade.manager.mapper.WbsTreePrivateMapper;
 import org.springblade.manager.service.*;
-import org.springblade.manager.utils.ExcelInfoUtils;
-import org.springblade.manager.utils.FileUtils;
-import org.springblade.manager.utils.RegularExpressionUtil;
-import org.springblade.manager.utils.WbsElementUtil;
+import org.springblade.manager.utils.*;
 import org.springblade.manager.vo.*;
 import org.springblade.manager.wrapper.ExcelTabWrapper;
 import org.springblade.resource.feign.CommonFileClient;
@@ -67,6 +65,7 @@ import org.springblade.resource.feign.NewIOSSClient;
 import org.springblade.resource.vo.NewBladeFile;
 import org.springblade.system.cache.ParamCache;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;
@@ -164,6 +163,8 @@ public class ExcelTabController extends BladeController {
 
     private final TaskClient taskClient;
 
+    private final BladeRedis bladeRedis;
+
 
 
 
@@ -1978,8 +1979,21 @@ public class ExcelTabController extends BladeController {
         List<TableInfo> tableInfoList = this.excelTabService.getTableInfoList(dataArray);
 
         executionTime.info("公式前");
+        try {
+            Long pKeyId = Long.parseLong(tableInfoList.get(0).getPkeyId());
+            String sql="SELECT node_name from m_wbs_tree_contract where p_key_id="+pKeyId;
+            String nodeName = jdbcTemplate.queryForObject(sql, String.class);
+            HashMap<Long, String> map = new HashMap<>();
+            map.put(pKeyId,nodeName);
+            RandomNumberHolder.setRandomNumber(map);
+        } catch (NumberFormatException e) {
+            throw new RuntimeException(e);
+        }
+
+
         //公式填充
         this.excelTabService.formulaFillData(tableInfoList, Long.parseLong(nodeId), ExecuteType.INSPECTION);
+        RandomNumberHolder.clear();
         assert tableInfoList != null;
         if(tableInfoList.size()==0){
             R.success("数据未发生变化");

+ 2 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/FormulaStrategy.java

@@ -1,5 +1,6 @@
 package org.springblade.manager.formula;
 
+import org.springblade.core.secure.BladeUser;
 import org.springblade.manager.dto.FormData;
 import org.springblade.manager.formula.impl.TableElementConverter;
 
@@ -10,5 +11,5 @@ import java.util.Map;
  * @author yangyj
  */
 public interface FormulaStrategy extends IStrategy {
-    void execute(FormData cur,TableElementConverter tec);
+    void execute(FormData cur, TableElementConverter tec);
 }

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/FormulaStrategyFactory.java

@@ -1,6 +1,7 @@
 package org.springblade.manager.formula;
 
 import lombok.Data;
+import org.springblade.core.secure.BladeUser;
 import org.springblade.manager.dto.FormData;
 import org.springblade.manager.formula.impl.TableElementConverter;
 import org.springframework.stereotype.Component;

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

@@ -11,6 +11,7 @@ import org.springblade.common.utils.BaseUtils;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.oss.model.BladeFile;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.core.tool.utils.RegexUtil;
 import org.springblade.core.tool.utils.StringPool;
 import org.springblade.manager.dto.ElementData;
@@ -1631,6 +1632,9 @@ public class ExecutorMeter extends FormulaExecutor {
 
             public Summary(Payment p) {
                     this.formNumber=p.getNumber();
+                    if(p.getNumber().equals("405-4")){
+                        System.out.println("111");
+                    }
                     this.itemName=p.getName();
                     this.unit = p.getUnit();
                     this.contractTotal=BaseUtils.str2BigDecimal(p.getContractTotal());
@@ -1679,7 +1683,7 @@ public class ExecutorMeter extends FormulaExecutor {
        /*分项工程中期支付汇总表*/
         @Override
         public void parse() {
-            builderFormDatas(SubprojectInterimPaymentSummary.class);
+             builderFormDatas(SubprojectInterimPaymentSummary.class);
             LinkedHashMap<String,Summary> endSummary = toSummary(paymentsPeriodEnd);
             LinkedHashMap<String,Summary> preSummary = toSummary(previous);
             LinkedHashMap<String,Summary> curSummary = toSummary(current);
@@ -1688,7 +1692,7 @@ public class ExecutorMeter extends FormulaExecutor {
             LinkedHashMap<String,InventoryForm> numbersGroup=  tec.meterInfo.getInventoryForms().stream().filter(e->!tec.meterInfo.getChapter().contains(e)&&StringUtils.isNotEquals(0,e.getParentId())).collect(Collectors.toMap(InventoryForm::getFormNumber,e->e,(v1,v2)->v1,LinkedHashMap::new));
             numbersGroup.forEach((number,itf)->{
                 SubprojectInterimPaymentSummary sis = new SubprojectInterimPaymentSummary();
-                /*期汇总*/
+                /*期汇总*/
                 Summary pre =preSummary.get(number);
                 /*本期末汇总*/
                 Summary end = endSummary.get(number);
@@ -1701,6 +1705,9 @@ public class ExecutorMeter extends FormulaExecutor {
                 sis.setContractMoney(itf.getContractMoney());
                 sis.setChangeMoney(itf.getChangeMoney());
                 sis.setPrice(itf.getBidPrice());
+                if(sis.getFormNumber().equals("405-4")){
+                    System.out.println("111");
+                }
                 /*只要存在累计就显示*/
                 if(end!=null&&end.getContractMoney()!=null) {
                     if(cur!=null) {
@@ -1710,7 +1717,9 @@ public class ExecutorMeter extends FormulaExecutor {
                             cur.setMoney(BaseUtils.str2BigDecimal(multiFc.apply(cur.getPrice(), cur.getCompleted().toString())).setScale(0, RoundingMode.HALF_UP));
                             if (pre != null) {
                                 pre.setCompleted(BaseUtils.str2BigDecimal(pre.getCompleted()).setScale(scale, RoundingMode.HALF_UP));
+                                if(ObjectUtil.isEmpty(pre.getMoney())){
                                 pre.setMoney(BaseUtils.str2BigDecimal(multiFc.apply(pre.getPrice(), pre.getCompleted().toString())).setScale(0, RoundingMode.HALF_UP));
+                                }
                                 end.setCompleted(BaseUtils.str2BigDecimal(addFc.apply(cur.getCompleted().toString(), pre.getCompleted().toString())).setScale(scale, RoundingMode.HALF_UP));
                                 end.setMoney(BaseUtils.str2BigDecimal(multiFc.apply(end.getPrice(), end.getCompleted().toString())).setScale(0, RoundingMode.HALF_UP));
                             } else {
@@ -1738,7 +1747,14 @@ public class ExecutorMeter extends FormulaExecutor {
                         sis.setPreviousPeriodCompleted(pre.getCompleted().toPlainString());
                     }
                     sis.setCompleted(end.getCompleted().toPlainString());
-                    sis.setCurrentPeriodEndPay(end.getMoney().toPlainString());
+                    //本期汇总的到本期末完成  //原来=(本期末汇总的本期支付金额) 现在=(上期末汇总的到本期末金额+本期汇总的金额)
+                    BigDecimal add;
+                    if(sis.getCurrentPeriodPay()!=null&&sis.getPreviousPeriodPay()!=null){
+                        add= new BigDecimal(sis.getCurrentPeriodPay()).add(new BigDecimal(sis.getPreviousPeriodPay()));
+                    }else {
+                        add=end.getMoney();
+                    }
+                    sis.setCurrentPeriodEndPay(add.toPlainString());
                     BigDecimal percent= BaseUtils.str2BigDecimal(ratioFc.apply(sis.getCurrentPeriodEndPay(), sis.getChangeMoney()));
                     if(BigDecimal.ZERO.compareTo(percent)<0) {
                         /*百分比大于零才显示*/

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

@@ -6,6 +6,7 @@ import com.mixsmart.utils.ListUtils;
 import com.mixsmart.utils.StringUtils;
 import lombok.Data;
 import org.springblade.business.feign.MileageClient;
+import org.springblade.core.secure.BladeUser;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.dto.ElementData;
 import org.springblade.manager.dto.FormData;
@@ -44,7 +45,7 @@ public class FormulaMileage implements FormulaStrategy {
 
 
     @Override
-    public void execute(FormData cur,TableElementConverter tec) {
+    public void execute(FormData cur, TableElementConverter tec) {
         List<String> relyList = cur.getFormula().getRelyList();
         if (relyList.size() < KEYS.size()) {
             return;

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

@@ -6,6 +6,7 @@ import com.mixsmart.utils.CustomFunction;
 import com.mixsmart.utils.FormulaUtils;
 import com.mixsmart.utils.StringUtils;
 import lombok.Data;
+import org.springblade.core.secure.BladeUser;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringPool;
@@ -50,7 +51,7 @@ public class FormulaTurnPoint implements FormulaStrategy {
     }
 
     @Override
-    public void execute(FormData cur,TableElementConverter tec) {
+    public void execute(FormData cur, TableElementConverter tec) {
         cur.setFinished(Boolean.TRUE);
         LinkedHashMap<String, FormData> dataSourceMap = new LinkedHashMap<>();
         String funArgs = ReUtil.getGroup1(TURN_REG, cur.getFormula().getFormula());

+ 12 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/FormulaZhiZuo.java

@@ -1,24 +1,34 @@
 package org.springblade.manager.formula.impl;
 
 import cn.hutool.core.util.ObjectUtil;
-import com.mixsmart.utils.StringUtils;
+
 import lombok.Data;
+import org.springblade.core.redis.cache.BladeRedis;
+
+import org.springblade.core.secure.BladeUser;
 import org.springblade.manager.bean.TableInfo;
 import org.springblade.manager.dto.ElementData;
 import org.springblade.manager.dto.FormData;
 import org.springblade.manager.entity.Formula;
 import org.springblade.manager.formula.FormulaStrategy;
+
+import org.springblade.manager.utils.RandomNumberHolder;
 import org.springframework.stereotype.Component;
 
 import java.util.*;
 
+
 @Component
 @Data
 public class FormulaZhiZuo implements FormulaStrategy {
+
     @Override
     public void execute(FormData cur, TableElementConverter tec) {
         String key = cur.getFormula().getRely().substring(cur.getFormula().getRely().indexOf(':') + 1);
-        String s = tec.getTableInfoList().get(0).getDataMap().get(key);
+        HashMap<Long, String> randomNumber = RandomNumberHolder.getRandomNumber();
+        Map.Entry<Long, String> firstMap = randomNumber.entrySet().iterator().next();
+        Optional<TableInfo> firstTableInfo = tec.getTableInfoList().stream().filter(tableInfo->tableInfo.getPkeyId().equals(firstMap.getKey().toString())).findFirst();
+        String s = firstTableInfo.get().getDataMap().get(key);
         String[] strings = s.split("☆");
         Map<Integer, Double> list = new HashMap<>();
         for (int i = 0; i < strings.length; i++) {

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

@@ -21,8 +21,10 @@ import org.springblade.manager.formula.FormulaLog;
 import org.springblade.manager.formula.ITableElementConverter;
 import org.springblade.manager.formula.KeyMapper;
 import org.springblade.manager.formula.NodeTable;
+import org.springblade.manager.utils.RandomNumberHolder;
 import org.springblade.manager.vo.*;
 import org.springblade.resource.feign.NewIOSSClient;
+import org.springframework.jdbc.core.JdbcTemplate;
 
 import java.util.*;
 import java.util.function.Predicate;
@@ -426,12 +428,35 @@ public class TableElementConverter implements ITableElementConverter {
                                 }
                             }
                             LinkedHashMap<Integer, List<ElementData>> pages = elementDataList.stream().collect(Collectors.groupingBy(ElementData::getIndex, LinkedHashMap::new, Collectors.toList()));
-                            for (int i = 0; i < pages.size(); i++) {
+                            if("ZHIZUO".equals(fd.getFormula().getNumber())){
+                                HashMap<Long, String> map = RandomNumberHolder.getRandomNumber();
+                                if(!map.entrySet().isEmpty()){
+                                    String nodeName = map.entrySet().iterator().next().getValue();
+                                    if(nodeName.indexOf("__")!=-1){
+                                        String num = nodeName.substring(nodeName.indexOf("__") + 2);
+                                        int i = Integer.parseInt(num);
+                                        List<ElementData> p = pages.get(0);
+                                        TableInfo info = tables.get(i);
+                                        info.setToBeUpdated(true);
+                                        info.getDataMap().put(fd.getKey(), FormulaUtils.recovery(p));
+                                    }else {
+                                        for (int i = 0; i < pages.size(); i++) {
+                                        /*每一页映射一个tableInfo*/
+                                        List<ElementData> p = pages.get(i);
+                                        TableInfo info = tables.get(i);
+                                        info.setToBeUpdated(true);
+                                        info.getDataMap().put(fd.getKey(), FormulaUtils.recovery(p));
+                                        }
+                                    }
+                                }
+                            }else {
+                                for (int i = 0; i < pages.size(); i++) {
                                 /*每一页映射一个tableInfo*/
                                 List<ElementData> p = pages.get(i);
                                 TableInfo info = tables.get(i);
                                 info.setToBeUpdated(true);
                                 info.getDataMap().put(fd.getKey(), FormulaUtils.recovery(p));
+                                }
                             }
                         } catch (Exception e) {
                             StaticLog.error("元素{}回写报错", fd.getCode());

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

@@ -62,6 +62,7 @@ import org.springblade.resource.vo.NewBladeFile;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
+import org.springframework.dao.DataAccessException;
 import org.springframework.dao.EmptyResultDataAccessException;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
@@ -2156,7 +2157,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             String tabName = wbsTreeContract1.getInitTableName();
             // 字段查询 并去掉公式字段
             String colkeys = "SELECT GROUP_CONCAT(COLUMN_NAME) as colkeys from information_schema.COLUMNS c where c.table_name='" + tabName + "' and COLUMN_NAME not in('id','p_key_id')";
-            Map<String, Object> stringObjectMap = jdbcTemplate.queryForMap(colkeys);
+            Map<String, Object> stringObjectMap = jdbcTemplate.queryForMap(
+                colkeys);
             colkeys = stringObjectMap.get("colkeys") + "";
             // 复制表数据
             String querySql = "insert into " + tabName + " (id,p_key_id," + colkeys + ") select '" + newPkId + "','" + newPkId + "'," + colkeys + " from " + tabName + " where p_key_id=" + wbsTreeContract.getPKeyId();
@@ -2208,7 +2210,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         //获取工程支付月报pdfUrl
         ReportResult monthlyReportPDF=getMonthlyReportPDF(url5,reportId,contractId,periodId,projectId,list,redisId);
         //获取中间支付申请表pdfUrl
-        ReportResult intermediateApplyPDF=getIntermediateApplyPDF(url4,periodId);
+        ReportResult intermediateApplyPDF=getIntermediateApplyPDF(url4,periodId,projectId);
+
         reportResults.add(CoverOfMidtermPaymentReportPDF);
         reportResults.add(intermediatePaymentPDF);
         reportResults.add(subsidyApplicationPaymentReviewPDF);
@@ -2928,8 +2931,16 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
      * @param url
      * @return
      */
-    public ReportResult getIntermediateApplyPDF(String url,Long periodId){
-    InputStream modInput = null;
+    public ReportResult getIntermediateApplyPDF(String url,Long periodId,Long projectId){
+        String projectName = null;
+        try {
+            String sql="Select project_name from m_project_info where id="+projectId;
+            projectName = jdbcTemplate.queryForObject(sql, String.class);
+        } catch (DataAccessException e) {
+            projectName=null;
+        }
+
+        InputStream modInput = null;
         FileInputStream excelFileInput = null;
         FileOutputStream outputStream = null;
         Workbook workbook = null;
@@ -2938,10 +2949,12 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             modInput = CommonUtil.getOSSInputStream(url);
             workbook = WorkbookFactory.create(modInput);
             Sheet sheet = workbook.getSheetAt(0);
+            Cell d=getCellByAddress(sheet,"D5");
+            d.setCellValue(projectName);
             //根据坐标获取单元格
             Cell c = getCellByAddress(sheet, "E6");
             //本期计量
-            Object o = bladeRedis.get("periodId" + periodId + "nowMoney");
+            Object o = bladeRedis.get("periodId:" + periodId + "nowMoney");
             BigDecimal value=new BigDecimal(0);
             if(ObjectUtil.isNotEmpty(o)&& o instanceof BigDecimal){
                 value=(BigDecimal) o;
@@ -3017,8 +3030,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             if(index.isPresent()){
                 int j = index.getAsInt();
                 if(j>0){
-                    //期数ID,章节号
-                        Object o = bladeRedis.get("periodId:"+list.get(j-1).getId()+"formNum:"+key+"nowMoney");
+                        //期数ID,章节号
+                        Object o = bladeRedis.get("periodId:"+list.get(j-1).getId()+"formNumber:"+monthlyReport.getFormNumber()+"nowEndMoney");
                         if(ObjectUtil.isNotEmpty(o)){
                             beforeEndMoney=beforeEndMoney.add ((BigDecimal) o);
                         }
@@ -3033,7 +3046,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             }
          }
             //本期完成
-            Object o = bladeRedis.get("periodId:"+periodId+"formNum:"+key+"nowMoney");
+            Object o = bladeRedis.get("periodId:"+periodId+"formNumber:"+key+"nowMoney");
             if(ObjectUtil.isNotEmpty(o)){
              monthlyReport.setNowMoney((BigDecimal)o);
               BigDecimal percentage = monthlyReport.getNowMoney().divide(monthlyReport.getCurrentMeterMoney(), 10, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"));
@@ -3042,6 +3055,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
            }
             //到本期末完成
             //如果有到上期末完成金额,和本期完成金额  则到本期末完成金额=到上期末完成金额+本期完成金额
+
             if(ObjectUtil.isNotEmpty(monthlyReport.getBeforeEndMoney())&&ObjectUtil.isNotEmpty(monthlyReport.getNowMoney())){
                 monthlyReport.setNowEndMoney(monthlyReport.getBeforeEndMoney().add(monthlyReport.getNowMoney()));
             }//如果到上期末完成金额为空,本期完成金额不为空 本期末完成金额=本期完成金额
@@ -3049,12 +3063,16 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                 monthlyReport.setNowEndMoney(monthlyReport.getNowMoney());
             }else if(ObjectUtil.isEmpty(monthlyReport.getNowMoney())&&ObjectUtil.isNotEmpty(monthlyReport.getBeforeEndMoney())){
                 monthlyReport.setNowEndMoney(monthlyReport.getBeforeEndMoney());
+            }else {
+                monthlyReport.setNowEndMoney(BigDecimal.ZERO);
             }
             if(ObjectUtil.isNotEmpty(monthlyReport.getNowEndMoney())){
                 BigDecimal percentage = monthlyReport.getNowEndMoney().divide(monthlyReport.getCurrentMeterMoney(), 10, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"));
                 percentage = percentage.setScale(2, BigDecimal.ROUND_HALF_UP); // 设置
                 monthlyReport.setNowEndC(percentage);
             }
+            //到本期末完成 本期ID+章节号
+            bladeRedis.set("periodId:"+periodId+"formNumber:"+monthlyReport.getFormNumber()+"nowEndMoney",monthlyReport.getNowEndMoney());
             values.add(monthlyReport);
         }
         MonthlyReportVo m1 = new MonthlyReportVo();
@@ -3208,7 +3226,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         BigDecimal percentage6 = m19.getNowEndMoney().divide(m11.getAfterCurrentMeterMoney(), 10, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"));
         percentage6 = percentage6.setScale(2, BigDecimal.ROUND_HALF_UP);
         m19.setNowEndC(percentage6);
-        bladeRedis.set("periodId"+periodId+"nowMoney",m19.getNowMoney());
+        bladeRedis.set("periodId:"+periodId+"nowMoney",m19.getNowMoney());
         values.add(m19);
         setZeroBigDecimalFieldsToNullInList(values);
         InputStream modInput = null;
@@ -3361,6 +3379,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             vo.setNowTotal(detailVO.getAllMeterTotal());
             //本期完成金额
             vo.setNowMoney(detailVO.getAllMeterTotal().multiply(detailVO.getCurrentPrice()).setScale(0, RoundingMode.HALF_UP));
+
+
             //大于0表示有上期的 需要添加上期末数据
             if(changeFormDetailMap.size()>0){
                     BigDecimal b1=BigDecimal.ZERO;
@@ -3368,8 +3388,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                 for (Map.Entry<String, List<MeterInventoryDetailVO>> entry : changeFormDetailMap.entrySet()) {
                     for (MeterInventoryDetailVO changevo : entry.getValue()) {
                         if(changevo.getFormNumber().equals(vo.getFormNumber())){
-                         b1=bladeRedis.get("period"+entry.getKey()+"formNumber"+vo.getFormNumber()+"detailsTotal");
-                         b2=bladeRedis.get("period"+entry.getKey()+"formNumber"+vo.getFormNumber()+"detailsMoney");
+                         b1=bladeRedis.get("periodId:"+entry.getKey()+"formNumber:"+vo.getFormNumber()+"detailsTotal");
+                         b2=bladeRedis.get("periodId:"+entry.getKey()+"formNumber:"+vo.getFormNumber()+"detailsMoney");
                          break;
                        }
                     }
@@ -3394,10 +3414,10 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                 vo.setNowEndMoney(vo.getNowMoney().setScale(0, RoundingMode.HALF_UP));
             }
             if(ObjectUtil.isNotEmpty(vo.getNowEndTotal())&&!vo.getNowEndTotal().equals(BigDecimal.ZERO)){
-                bladeRedis.set("period"+periodId+"formNumber"+vo.getFormNumber()+"detailsTotal",vo.getNowEndTotal());
+                bladeRedis.set("periodId:"+periodId+"formNumber:"+vo.getFormNumber()+"detailsTotal",vo.getNowEndTotal());
             }
             if(ObjectUtil.isNotEmpty(vo.getNowEndMoney())&&!vo.getNowEndMoney().equals(BigDecimal.ZERO)){
-                bladeRedis.set("period"+periodId+"formNumber"+vo.getFormNumber()+"detailsMoney",vo.getNowEndMoney());
+                bladeRedis.set("periodId:"+periodId+"formNumber:"+vo.getFormNumber()+"detailsMoney",vo.getNowEndMoney());
             }
 
             list1.add(vo);
@@ -3539,7 +3559,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                     listUrl.add(bladeFile.getPdfUrl());
                 }
                 //本期末完成 本期ID+章节号
-                bladeRedis.set("periodId:"+periodId+"formNum:"+listEntry.getKey()+"nowMoney",totalNowEndMoney);
+                bladeRedis.set("periodId:"+periodId+"formNumber:"+listEntry.getKey()+"nowEndMoney",totalNowEndMoney);
+
             }
             collectionUtilsClient.mergePdfPublicMethods(listUrl, localImgUrl);
             //上传oss

+ 19 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/utils/RandomNumberHolder.java

@@ -0,0 +1,19 @@
+package org.springblade.manager.utils;
+
+import java.util.HashMap;
+
+public class RandomNumberHolder {
+        private static final ThreadLocal<HashMap<Long,String>> randomNumberThreadLocal = new ThreadLocal<>();
+
+    public static void setRandomNumber(HashMap<Long,String> map) {
+        randomNumberThreadLocal.set(map);
+    }
+
+    public static HashMap<Long,String>getRandomNumber() {
+        return randomNumberThreadLocal.get();
+    }
+
+    public static void clear() {
+        randomNumberThreadLocal.remove();
+    }
+}

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

@@ -3698,7 +3698,7 @@ public class TaskController extends BladeController {
             return R.data(rawPdfUrL);
         }else{
              reportResults = formulaClient.formulaExecute3(report.getContractId(), report.getId(), report.getType());
-        executionTime.info("公式执行");
+             executionTime.info("公式执行");
         }
         String fileUrl = null;
         if (Func.isNotEmpty(reportResults)) {