yangyj 1 سال پیش
والد
کامیت
5e37259035

+ 2 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/BaseInfo.java

@@ -44,6 +44,8 @@ public class BaseInfo {
     private String  bankAccount;
     /**银行账户名称*/
     private String  bankAccountName;
+    /**合同总金额*/
+    private String  TotalAmount;
 
 
 }

+ 1 - 1
blade-service/blade-manager/src/main/java/com/jfireel/expression/node/CalculateNode.java

@@ -13,5 +13,5 @@ public interface CalculateNode {
     String literals();
     String COLON=":";
     String DXD_REG="[0-9.-]+(\\*[0-9.-]+)+";
-    String DES_REG="[-+]?[0-9.]+(/[-+]?[0-9.]+)*";
+    String DES_REG="[-+]?[0-9.]+(/[-+]?[0-9.]+)+";
 }

+ 8 - 5
blade-service/blade-manager/src/main/java/com/jfireel/expression/node/impl/MinusNode.java

@@ -52,8 +52,7 @@ public class MinusNode extends OperatorResultNode {
 
 
 
-/*
-    public static void main(String[] args) {
+    /*public static void main(String[] args) {
         Map<String,Object> map = new HashMap<>();
         map.put("A","1:2.36");
         map.put("B","1:4");
@@ -65,12 +64,16 @@ public class MinusNode extends OperatorResultNode {
         map.put("G","569");
         map.put("H","502");
         map.put("Z","660/540/570/500");
+        map.put("X","-10");
+        map.put("x","10");
+        new ArrayList<>(Arrays.asList(
+                "X-x"
+        )).stream().map(s->Expression.parse(s).calculate(map).toString()).forEach(System.out::println);
          new ArrayList<>(Arrays.asList(
-                "A-B","D-C","C-D","C2-D","E-Z","F-Z","G-Z","H-Z"
+                "A-B","D-C","C-D","C2-D","E-Z","F-Z","G-Z","H-Z","X-x"
         )).stream().map(s->Expression.parse(s).calculate(map).toString()).forEach(System.out::println);
 
-    }
-*/
+    }*/
 
 
 

+ 2 - 2
blade-service/blade-manager/src/main/java/com/mixsmart/utils/CustomFunction.java

@@ -2706,11 +2706,11 @@ public class CustomFunction {
             if (StringUtils.isEmpty(scale)) {
                 scale = 0;
             }
-            String delimiter = handleNull(matcherFindGroup("[^0-9./E]", design.toString(), 0, false));
+            String delimiter = handleNull(matcherFindGroup("[^0-9./E\\-]", design.toString(), 0, false));
             if (StringUtils.isEmpty(delimiter)) {
                 delimiter = CONCAT;
             }
-            String delimiter2 = handleNull(matcherFindGroup("[^0-9.E]", data.toString(), 0, false));
+            String delimiter2 = handleNull(matcherFindGroup("[^0-9.E\\-]", data.toString(), 0, false));
             if (StringUtils.isEmpty(delimiter2)) {
                 delimiter2 = CONCAT;
             }

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

@@ -104,8 +104,6 @@ public class TableElementConverter implements ITableElementConverter {
     /**是否强制执行,刷数据的时候会用到*/
     public boolean  force=false;
 
-    public JdbcTemplate  jdbcTemplate;
-
     private final Converter in;
     private final Converter out;
     /*计量属性*/
@@ -169,8 +167,15 @@ public class TableElementConverter implements ITableElementConverter {
     }
     /*优化测试新增属性end*/
 
+
     /*计量*/
-    public TableElementConverter() {
+    public TableElementConverter(List<FormData> processFds,Map<String,Map<String, String>> coordinateMap,List<NodeTable> tableAll) {
+        this.formDataList=processFds;
+        for(FormData fd:processFds){
+            this.formDataMap.put(fd.getCode(),fd);
+        }
+        this.coordinateMap=coordinateMap;
+        this.tableAll=tableAll;
         this.in=new BeforeC();
         this.out=new AfterC();
     }
@@ -334,7 +339,18 @@ public class TableElementConverter implements ITableElementConverter {
     public class BeforeC implements Converter{
         @Override
         public void convert() {
-
+              Map<String,List<FormData>> group = formDataList.stream().collect(Collectors.groupingBy(FormData::getTableName));
+              for(Map.Entry<String,List<FormData>> entry:group.entrySet()){
+                     Map<String,String> keyMap=coordinateMap.getOrDefault(entry.getKey(), new HashMap<>(20));
+                     for(FormData fd:entry.getValue()){
+                         String coords =keyMap.get(fd.getKey());
+                         if(Func.isNotBlank(coords)){
+                             fd.flushCoords(coords);
+                         }else{
+                             continue;
+                         }
+                     }
+              }
         }
     }
     @Override

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

@@ -89,6 +89,6 @@ public interface IFormulaService extends BaseService<Formula> {
     /**获取当前节点的参数wbsNodeId:WBS级id ,wtpPkeyId:项目级PkeyId*/
     List<WbsParam> getNodeWps(Long wbsNodeId,Long wtpPkeyId);
     /*计量公式执行 0中间,1材料,2开工*/
-    void execute3(Long periodId,Integer type);
+    void execute3(Long contractId,Long periodId,Integer type);
 
 }

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

@@ -376,7 +376,6 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                         tec.setContractId(contractId);
                         tec.setProjectId(projectId);
                         if (tec.isPresent()) {
-                            tec.setJdbcTemplate(this.jdbcTemplate);
                             tec.before();
                             this.formulaService.execute(tec);
                             tec.after();

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

@@ -2460,13 +2460,18 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         return R.fail("无数据");
     }
 
-
+    String[] tabArr=new String[]{"计量报表","动员预付款报表","材料预付款报表"};
     @Override
-    public void execute3(Long periodId ,Integer type) {
+    public void execute3(Long contractId,Long periodId ,Integer type) {
         /*封面、支付申请单、付款申请表*/
-        String[] tableNum=new String[]{"m_20231213111323_1734773480894758912","m_20231213111431_1734773767856455680","m_20231213111707_1734774423547805696"};
-        List<FormData> processFds = this.createFormDataByTableName(String.join(",", tableNum));
-        TableElementConverter tec = new TableElementConverter();
+        ContractInfo contractInfo = this.contractInfoService.getById(contractId);
+        Map<String,String> parent=  this.getSqlOne("select wbs_id wbsId,CONCAT(ancestors,',',id) path from  m_wbs_tree_private a  where a.node_name='?' and a.project_id=?",Map.class,tabArr[type],contractInfo.getPId());
+        List<NodeTable> tableList=  this.getSqlList("select p_key_id pkeyId, node_name nodeName ,init_table_name initTableName,html_url htmlUrl  from  m_wbs_tree_private where ancestors like '?%' and LENGTH(html_url)>0 and is_deleted=0 and project_id=? and wbs_id=?",NodeTable.class,parent.get("path"),contractInfo.getPId(),parent.get("wbsId"));
+        Map<String,Map<String,String>> coordinateMap=tableList.stream().collect(Collectors.toMap(NodeTable::getInitTableName,m->FormulaUtils.getElementCell(m.getHtmlUrl()),(v1,v2)->v2));
+        List<FormData> processFds = this.createFormDataByTableName(String.join(",", ""));
+        TableElementConverter tec = new TableElementConverter(processFds,coordinateMap,tableList);
+        tec.setProjectId(Long.parseLong(contractInfo.getPId()));
+        tec.setContractId(contractInfo.getId());
         tec.before();
         List<FormulaHandleChain> formulaHandleChains = new ArrayList<>();
         ExecutorInit init= new ExecutorInit(tec);