Browse Source

公式相关:作用域功能优化;bug处理

yangyj 2 years ago
parent
commit
90719ee0b8

+ 2 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ElementFormulaMapping.java

@@ -22,6 +22,8 @@ public class ElementFormulaMapping extends BaseEntity {
     private Long nodeId;
     @Size(max = 20)
     private Long formulaId;
+    @Size(max = 20)
+    private Long wbsId;
     private Long projectId;
     private Integer scope;
     private Long paramId;

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

@@ -14,6 +14,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springblade.common.utils.SnowFlakeUtil;
+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.tool.api.R;
@@ -99,6 +100,9 @@ public class FormulaController {
                  efm.setScope(f.getScope());
                  efm.setNodeId(f.getNodeId());
                  efm.setProjectId(f.getProjectId());
+                  if(f.getScope()<=2&&f.getScope()>0){
+                         throw new ServiceException("缺少wbsId");
+                  }
                  this.elementFormulaMappingService.save(efm);
                  /*假如不存在projectId则认为是系统级模版公式,必须同步给所有项目TODO*/
                  return R.data(fa.getId(),"新增成功");
@@ -167,7 +171,7 @@ public class FormulaController {
     public R<FormulaBean> detail(FormulaBean f) {
         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.isEquals(0,f.getScale())){
+           if(StringUtils.isNotEquals(0,f.getScope())){
                if(Func.isNotEmpty(f.getNodeId())){
                    sb.append(" and a.node_id=").append(f.getNodeId());
                }

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ElementFormulaMappingMapper.xml

@@ -12,6 +12,7 @@
         <result column="isDeleted" property="is_deleted"/>
         <result column="elementId" property="element_id"/>
         <result column="nodeId" property="node_id"/>
+        <result column="wbsId" property="wbs_id"/>
         <result column="formulaId" property="formula_id"/>
         <result column="projectId" property="project_id"/>
         <result column="paramId" property="param_id"/>

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

@@ -755,7 +755,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             /*检验单附表处理*/
             List<FormData> inspectionList = new ArrayList<>();
             /*0检验表1评定表*/
-            this.tec.getTableAll().stream().filter(e -> e.getNodeName().contains("检验单") || e.getNodeName().contains("评定表")).forEach(e -> {
+            this.tec.getTableAll().stream().filter(e -> e.getTableType().equals(1) || e.getNodeName().contains("评定表")).forEach(e -> {
                 /*获取所有挂在表里的元素映射关系*/
                 this.tec.getKeyMappers().stream().filter(p -> p.getPkId().equals(e.getPKeyId())).forEach(k -> {
                     /*元素长度筛选超页的元素*/
@@ -779,7 +779,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                         WbsTreeContract wtc = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getParentId, one.getParentId()).eq(WbsTreeContract::getContractId,tec.getContractId()).eq(WbsTreeContract::getWbsId, one.getWbsId()).and(e->e.eq(WbsTreeContract::getNodeName, pd?"质量检验评定表(附表)":"质量检验表(附表)").or().eq(WbsTreeContract::getFullName, pd?"质量检验评定表(附表)":"质量检验表(附表)")));
                         if (wtc != null) {
                             /*附表的顺序在检验单或者评定表之后*/
-                            int sort=this.tec.getTableAll().stream().filter(e -> e.getNodeName().contains("检验单") || e.getNodeName().contains("评定表")).map(NodeTable::getSort).max(Integer::compareTo).orElse(30);
+                            int sort=this.tec.getTableAll().stream().filter(e ->e.getTableType().equals(1) || e.getNodeName().contains("评定表")).map(NodeTable::getSort).max(Integer::compareTo).orElse(30);
                             this.wbsTreeContractService.update(Wrappers.<WbsTreeContract>lambdaUpdate()
                                     .set(WbsTreeContract::getSort,sort).set(WbsTreeContract::getContractType,-1).set(WbsTreeContract::getAncestors,one.getAncestors())
                                     .set(WbsTreeContract::getIsCopeTab,2)
@@ -1242,7 +1242,7 @@ public  List<ElementData> setScale(Integer scale,List<ElementData> data){
                 "from "+tableName+" a " +
                 "inner join m_table_info b on a.init_table_name=b.tab_en_name " +
                 "INNER JOIN m_wbs_form_element c on b.id=c.f_id " +
-                "where a.p_key_id in("+pkIds+")  ORDER BY field(a.p_key_id,"+pkIds+")");
+                "where a.p_key_id in("+pkIds+")  and c.is_deleted=0  ORDER BY field(a.p_key_id,"+pkIds+")");
     }
 
     private void setFormula(List<KeyMapper> list,List<Map<String,Object>> efMap){

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

@@ -498,6 +498,10 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         return integer > 0;
     }
 
+
+    /**
+     * @Param [id 表, nodeId 工序, type 1:WBS 0:项目]
+     **/
     @Override
     public List<WbsFormElementVO> selectFormElements(String id, String nodeId, Integer type) {
         List<WbsFormElementVO> wbsFormElements = wbsTreeMapper.selectFormElements(id);
@@ -517,7 +521,19 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             /*TYPE==1就是WBS级别*/
             Integer scopeA = com.mixsmart.utils.StringUtils.isEquals(type, 1) ? FormulaBean.WBS_GLOBAL : FormulaBean.PRO_GLOBAL;
             Integer scopeB = com.mixsmart.utils.StringUtils.isEquals(type, 1) ? FormulaBean.WBS_PART : FormulaBean.PRO_PART;
-            List<Long> longs = this.jdbcTemplate.queryForList("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, Long.class);
+            String sqlTmp;
+            WbsTreePrivate treePrivate;
+            WbsTree wbsTree;
+            if (com.mixsmart.utils.StringUtils.isEquals(type, 1)){
+                 wbsTree =this.wbsTreeMapper.selectById(nodeId);
+                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));
+                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;
+            }
+            List<Long> longs = this.jdbcTemplate.queryForList(sqlTmp, Long.class);
             wbsFormElements.forEach(e -> {
                 e.setGlobalFormula(longs.contains(e.getId()) ? 1 : 0);
             });
@@ -525,10 +541,10 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             if (com.mixsmart.utils.StringUtils.isEquals(type, 1)) {
                 sql = "select c.element_id from m_wbs_tree a INNER JOIN m_wbs_tree b on a.parent_id=b.id INNER JOIN m_element_formula_mapping c on b.id=c.node_id where  a.id=" + id + " and c.scope=" + scopeB + " and c.element_id in(" + elementIds + ")";
             } else if (com.mixsmart.utils.StringUtils.isEquals(type, 0)) {
-                WbsTreePrivate treePrivate = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, id));
-                sql = "select c.element_id from m_wbs_tree_private a INNER JOIN m_wbs_tree b on a.parent_id=b.id INNER JOIN m_element_formula_mapping c on b.id=c.node_id where  a.p_key_id=" + id + " and c.scope=" + scopeB + " and c.element_id in(" + elementIds + ")  and c.project_id=" + treePrivate.getProjectId();
+                 treePrivate = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, id));
+                sql = "select c.element_id from m_wbs_tree_private a  INNER JOIN m_element_formula_mapping c on a.parent_id=c.node_id where  a.p_key_id=" + id + " and c.scope=" + scopeB + " and c.element_id in(" + elementIds + ")  and c.project_id=" + treePrivate.getProjectId();
             } else if (com.mixsmart.utils.StringUtils.isEquals(type, 3)) {
-                WbsTreePrivate treePrivate = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, nodeId));
+                 treePrivate = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, nodeId));
                 sql = "select c.element_id from m_wbs_tree_private a INNER JOIN m_wbs_tree b on a.parent_id=b.id INNER JOIN m_element_formula_mapping c on b.id=c.node_id where  a.p_key_id=" + id + " and c.scope=35 and c.element_id in(" + elementIds + ")  and c.project_id=" + treePrivate.getProjectId();
             } else {
                 sql = "select c.element_id from m_wbs_tree a INNER JOIN m_wbs_tree b on a.parent_id=b.id INNER JOIN m_element_formula_mapping c on b.id=c.node_id where  a.id=" + id + " and c.scope=35 and c.element_id in(" + elementIds + ")";