Explorar o código

Merge branch 'master' of http://47.110.251.215:3000/java_org/bladex

huangtf %!s(int64=2) %!d(string=hai) anos
pai
achega
e0fd38ad3e

+ 15 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/FormulaOption.java

@@ -0,0 +1,15 @@
+package org.springblade.manager.dto;
+
+import lombok.Data;
+
+/**
+ * @author yangyj
+ * @Date 2023/3/1 17:35
+ * @description TODO
+ */
+@Data
+public class FormulaOption {
+    private Long pKeyId;
+    private Integer value;
+    private String key;
+}

+ 4 - 5
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/DatumPointService.java

@@ -54,21 +54,20 @@ public class DatumPointService extends BaseServiceImpl<DatumPointMapper, DatumPo
                       wrapper = Wrappers.<DatumPoint>lambdaQuery().eq(DatumPoint::getContractId, contractId).eq(DatumPoint::getType, 1);
                   }
                   List<DatumPoint> data = this.list(wrapper);
-                  String finalKey = key;
                   if (Func.isNotEmpty(data)) {
                       if (ka.length == 1) {
                           data.forEach(e -> {
                               Map<String, Object> map = new HashMap<>();
-                              map.put(finalKey +"__"+ka[0], e.getH());
+                              map.put(ka[0], e.getH());
                               result.put(e.getName(), map);
                           });
                       } else {
                           data.forEach(e -> {
                               Map<String, Object> map = new HashMap<>();
-                              map.put(finalKey+"__"+ka[0], e.getX());
-                              map.put(finalKey+"__"+ka[1], e.getY());
+                              map.put(ka[0], e.getX());
+                              map.put(ka[1], e.getY());
                               if(ka.length>2){
-                                  map.put(finalKey+"__"+ka[2], e.getH());
+                                  map.put(ka[2], e.getH());
                               }
                               result.put(e.getName(), map);
                           });

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

@@ -1549,7 +1549,7 @@ public class CustomFunction {
 	public static Object tableNames(List<String>treeNodes){
 		if(CollectionUtil.isNotEmpty(treeNodes)){
 			List<String>nodes=new ArrayList<>(treeNodes);
-           return   nodes.stream().filter(StringUtils::isNotEmpty).map(e->e.replaceAll("__\\d+$","")).distinct().collect(Collectors.joining("\n"));
+           return   nodes.stream().filter(e->StringUtils.isNotEmpty(e)&&!e.contains("A15")).map(e->e.replaceAll("__\\d+$","")).distinct().collect(Collectors.joining("\n"));
 		}
 		return "";
 	}

+ 9 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/FormulaBaseController.java

@@ -1,5 +1,6 @@
 package org.springblade.manager.controller;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -11,6 +12,8 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.constant.RoleConstant;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.entity.FormulaBase;
+import org.springblade.manager.entity.WbsTreeContract;
+import org.springblade.manager.service.IWbsTreeContractService;
 import org.springblade.manager.service.impl.FormulaBaseService;
 import org.springblade.manager.vo.FormulaBaseVo;
 import org.springframework.web.bind.annotation.*;
@@ -34,6 +37,7 @@ import java.util.Map;
 public class FormulaBaseController extends BladeController {
 
     private final FormulaBaseService service;
+    private final IWbsTreeContractService wbsTreeContractService;
     /**
      * 新增或修改
      */
@@ -82,7 +86,11 @@ public class FormulaBaseController extends BladeController {
     }
 
     @GetMapping("/get-file")
-    public void getFile(HttpServletResponse response, String url) throws IOException {
+    public void getFile(HttpServletResponse response, String url,String pkeyId) throws IOException {
+        if(Func.isNotEmpty(pkeyId)){
+            WbsTreeContract one =this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId,pkeyId));
+            url=one.getHtmlUrl();
+        }
        this.service.download(response,url);
     }
 

+ 44 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/FormulaController.java

@@ -1,6 +1,7 @@
 package org.springblade.manager.controller;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -23,9 +24,12 @@ import org.springblade.manager.dto.*;
 import org.springblade.manager.entity.ElementFormulaMapping;
 import org.springblade.manager.entity.Formula;
 import org.springblade.manager.entity.TextdictInfo;
+import org.springblade.manager.entity.WbsTreeContract;
+import org.springblade.manager.formula.KeyMapper;
 import org.springblade.manager.service.IElementFormulaMappingService;
 import org.springblade.manager.service.IExcelTabService;
 import org.springblade.manager.service.ITextdictInfoService;
+import org.springblade.manager.service.IWbsTreeContractService;
 import org.springblade.manager.service.impl.FormulaServiceImpl;
 import org.springblade.manager.wrapper.FormulaWrapper;
 import org.springframework.dao.EmptyResultDataAccessException;
@@ -81,7 +85,6 @@ public class FormulaController {
              Formula fa  =f.toFormula();
              fa.setFormula(StringUtils.escapeFormula(f.getFormula()));
              fa.setRemark(StringUtils.escapeFormula(fa.getRemark()));
-//             fa.setMap(StringUtils.escapeFormula(fa.getMap()));
              this.service.relyParse(fa);
              if(f.isNewOne()){
                  if(StringUtils.isEmpty(f.getFormula())){
@@ -309,6 +312,46 @@ public class FormulaController {
         return R.fail("无数据");
     }
 
+    @GetMapping("/panel")
+    @ApiOperationSupport(order = 10)
+    @ApiOperation(value = "公式交互面板", notes = "公式交互面板")
+    public R<Object> panel(Long pkeyId ,String key,String projectId)  {
+             Map<String,Object> result = new LinkedHashMap<>();
+              key=key.replaceAll("__[\\d_]+","");
+              List<KeyMapper> kms =  this.service.getKeyMapperList(Collections.singletonList(pkeyId),projectId);
+              if(Func.isNotEmpty(kms)&&Func.isNotEmpty(kms.get(0).getFormulaId())){
+                   Formula formula = this.service.getById(kms.get(0).getFormulaId());
+                   if(formula.getFormula().contains(".option")){
+                       result.put("type","radio");
+                       Map<String,Object> info = new LinkedHashMap<>();
+                       result.put("info",info);
+                       info.put("label","是否引用公式数据");
+                        List<Map<String,Object>> value = new ArrayList<>();
+                        info.put("value",value);
+                        Map<String,Object> y=new LinkedHashMap<>();
+                        Map<String,Object> n=new LinkedHashMap<>();
+                        value.add(y);
+                        value.add(n);
+                        y.put("label","是");
+                        y.put("value",1);
+                        n.put("label","是");
+                        n.put("value",1);
+                   }
+              }
+             return R.data(result);
+    }
+
+    @PostMapping("/panel-save")
+    @ApiOperationSupport(order = 10)
+    @ApiOperation(value = "公式交互面板参数保存", notes = "公式交互面板参数保存")
+    public R<Object> panelSave( @RequestBody FormulaOption fo){
+            List<Map<String,Object>> mapList = this.jdbcTemplate.queryForList("select parent_id pid,contract_id cid from m_wbs_tree_contract where p_key_id="+fo.getPKeyId());
+            if(Func.isNotEmpty(mapList)){
+                  Map<String,Object> map = mapList.get(0);
+                   this.jdbcTemplate.execute("");
+            }
+           return    R.success("保存成功");
+    }
 
 
     public String getDev(String pkId){

+ 2 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/FormulaClientImpl.java

@@ -38,7 +38,8 @@ public class FormulaClientImpl implements  FormulaClient{
               Formula formula = this.service.getById(id);
               if(Func.isNotEmpty(formula)) {
                   formula.getRelyList().forEach(e -> {
-                      sb.append(keysMap.get(e.split(StringPool.COLON)[1])).append(StringPool.COMMA);
+                      String heard =e.split(StringPool.COLON)[1];
+                      sb.append(heard).append("__").append(keysMap.get(heard)).append(StringPool.COMMA);
                   });
               }
           }

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

@@ -752,11 +752,38 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                      Matcher m = RegexUtils.matcher("T\\(com.mixsmart.utils.CustomFunction\\)\\.(compound)\\(([^]]+)\\)",f);
                      while (m.find()){
                          List<FormData> target = getFormDataByCode(m.group(2));
-                         Object data =target.stream().map(e->e.getValues().stream().map(ElementData::getValue).collect(Collectors.toList())).collect(Collectors.toList());
-                         String key =putDataWithKey(data);
-                         String key2 =putDataWithKey(target.stream().map(FormData::getEName).collect(Collectors.toList()));
-                         String func = CustomFunction.CLASS_CALL+"compound("+key+","+key2+")";
-                         f=f.replace(m.group(),func);
+                         List<List<Object>> values=target.stream().map(e->e.getValues().stream().map(ElementData::getValue).collect(Collectors.toList())).collect(Collectors.toList());
+                         List<String> eNames=target.stream().map(FormData::getEName).collect(Collectors.toList());
+                         Map<String,List<Object>> data = new LinkedHashMap<>();
+                         for(int i=0;i<eNames.size();i++){
+                             data.put(eNames.get(i),values.get(i));
+                         }
+                         f=f.replace(m.group(),putDataWithKey(data));
+                     }
+                 }
+                 if(f.contains(".option")){
+                     Matcher m = RegexUtils.matcher("T\\(com.mixsmart.utils.CustomFunction\\)\\.(option)\\(([^]]+)\\)",f);
+                     while (m.find()){
+                       String[] args= m.group(2).split(",");
+                       String flag=args[0];
+                       if(flag.equals("OPTION")){
+                           Optional<KeyMapper> kOp=tec.getKeyMappers().stream().filter(e->StringUtils.isEquals(e.getCode(),fd.getCode())).findFirst();
+                           if(kOp.isPresent()){
+                               /*表名+合同段+父节点*/
+                               String findStr = "OP"+DigestUtil.md5Hex(fd.getCode()+ tec.getTableAll().stream().filter(t->StringUtils.isEquals(t.getPKeyId(),kOp.get().getPkId())).map(t->fd.getTableName()+t.getContractId()+t.getParentId()).collect(Collectors.joining()));
+                               Map<String,Object> dictMap = (Map<String, Object>) this.constantMap.computeIfAbsent("OPTION",k->new HashMap<>());
+                               flag=StringUtils.handleNull(dictMap.get(findStr));
+                           }
+                       }
+                       if(Func.isBlank(flag)){
+                           /*默认0*/
+                           flag="0";
+                       }
+                       if(StringUtils.isEquals(flag,1)){
+                           f=f.replace(m.group(),m.group(2).replaceAll("^[0-1],",""));
+                       }else{
+                           f=f.replace(m.group(),"''");
+                       }
                      }
                  }
                  if(f.contains("quantity")){
@@ -793,6 +820,9 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                  e.printStackTrace();
              }
     }
+
+
+
     public void  tmpFc(FormData fd){
         /*临时代码,牛皮癣的存在,替代后删除*/
         Formula formula = fd.getFormula();