Эх сурвалжийг харах

公式相关:作用域bug

yangyj 2 жил өмнө
parent
commit
f55c3597a2

+ 1 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/FormulaBean.java

@@ -39,6 +39,7 @@ public class FormulaBean {
     private Long projectId;
     private String dev;
     private Integer ver;
+    private Long wbsId;
     private Map<String,Object> dict;
     public Formula toFormula(){
         Formula f= new Formula();

+ 11 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/FormulaController.java

@@ -52,6 +52,7 @@ import java.util.stream.Collectors;
 public class FormulaController {
     private final FormulaServiceImpl service;
     private final IExcelTabService tabService;
+    private final  IWbsTreeService wbsTreeService;
     private final IElementFormulaMappingService elementFormulaMappingService;
     private final JdbcTemplate jdbcTemplate;
     private final IContractInfoService contractInfoService;
@@ -101,7 +102,15 @@ public class FormulaController {
                  efm.setNodeId(f.getNodeId());
                  efm.setProjectId(f.getProjectId());
                   if(f.getScope()<=2&&f.getScope()>0){
-                         throw new ServiceException("缺少wbsId");
+                         if(f.getWbsId()==null&&f.getNodeId()==null) {
+                             throw new ServiceException("wbsId和nodeId 必须有一个");
+                         }if(f.getWbsId()!=null){
+                             efm.setWbsId(f.getWbsId());
+                         }else{
+                             WbsTree wbsTree =this.wbsTreeService.getById(f.getNodeId());
+                             efm.setWbsId(Long.parseLong(wbsTree.getWbsId()));
+                      }
+
                   }
                  this.elementFormulaMappingService.save(efm);
                  /*假如不存在projectId则认为是系统级模版公式,必须同步给所有项目TODO*/
@@ -172,7 +181,7 @@ public class FormulaController {
         if(f.getElementId()!=null){
             StringBuilder sb = new StringBuilder("select b.* from m_element_formula_mapping a INNER JOIN m_formula b on a.formula_id=b.id where a.element_id="+f.getElementId()+" and b.is_deleted=0 and a.scope ="+f.getScope());
            if(StringUtils.isNotEquals(0,f.getScope())){
-               if(Func.isNotEmpty(f.getNodeId())){
+               if(Func.isNotEmpty(f.getNodeId())&&(f.getScope().equals(FormulaBean.PRO_PART)||f.getScope().equals(FormulaBean.WBS_PART))){
                    sb.append(" and a.node_id=").append(f.getNodeId());
                }
                if(Func.isNotEmpty(f.getProjectId())){

+ 2 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -525,10 +525,10 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             WbsTreePrivate treePrivate;
             WbsTree wbsTree;
             if (com.mixsmart.utils.StringUtils.isEquals(type, 1)){
-                 wbsTree =this.wbsTreeMapper.selectById(nodeId);
+                 wbsTree =this.wbsTreeMapper.selectById(id);
                 sqlTmp="select a.id from m_wbs_form_element a inner join m_element_formula_mapping b on a.id=b.element_id where a.id in(" + elementIds + ") and b.wbs_id="+wbsTree.getWbsId()+" and b.scope=" + scopeA;
             }else  if (com.mixsmart.utils.StringUtils.isEquals(type, 0)){
-                 treePrivate = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, nodeId));
+                 treePrivate = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, id));
                 sqlTmp="select a.id from m_wbs_form_element a inner join m_element_formula_mapping b on a.id=b.element_id join m_wbs_tree_private c on c.parent_id=b.node_id where a.id in(" + elementIds + ") and c.project_id="+treePrivate.getProjectId()+" and b.scope=" + scopeA;
             }else{
                 sqlTmp="select a.id from m_wbs_form_element a inner join m_element_formula_mapping b on a.id=b.element_id where a.id in(" + elementIds + ") and b.scope=" + scopeA;