Kaynağa Gözat

公式相关

yangyj 1 yıl önce
ebeveyn
işleme
b707907119

+ 8 - 3
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/FormData.java

@@ -9,6 +9,7 @@ import org.springblade.core.tool.utils.StringPool;
 import org.springblade.manager.entity.Formula;
 
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -256,19 +257,23 @@ public class FormData {
         }
     }
 
+
+    private Function<List<ElementData>,String> valueFc=l->l.stream().map(ElementData::stringValue).collect(Collectors.joining(StringPool.COMMA));
+    /*用于比较元素内容是否更新*/
     public boolean hasChange(){
         if(this.values!=null&&this.initial!=null) {
             if (this.values.size() != this.initial.size()) {
                 return true;
             } else if (this.values.size() > 0) {
-                String sa = this.values.stream().map(ElementData::stringValue).collect(Collectors.joining());
-                String sc = this.initial.stream().map(ElementData::stringValue).collect(Collectors.joining());
-                return sa.equals(sc);
+                String sa =valueFc.apply(this.values);
+                String sc =valueFc.apply(this.initial);
+                return !sa.equals(sc);
             }
         }
         return false;
     }
 
+
     /*是否是测量业务数据*/
     public boolean isContent(){
         return this.structure==1;

+ 5 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -1901,6 +1901,7 @@ public class ExcelTabController extends BladeController {
         List<TableInfo> tableInfoList = this.excelTabService.getTableInfoList(dataArray);
         long start = System.currentTimeMillis();
         if (tableInfoList != null) {
+            tableInfoList.forEach(e->{e.setToBeUpdated(true);});
             tableAll = wbsTreeContractService.searchNodeAllTable(nodeId, "1", contractId, projectId, null);
             doForTableIst(tableAll,tableInfoList);
           /*  List<Long> tableAllIds = tableAll.stream().map(AppWbsTreeContractVO::getPKeyId).collect(Collectors.toList());
@@ -1935,6 +1936,10 @@ public class ExcelTabController extends BladeController {
         System.out.println("加载所有表单数据耗时:"+(System.currentTimeMillis()-start));
         //公式填充
         this.excelTabService.formulaFillData(tableInfoList, Long.parseLong(nodeId), ExecuteType.INSPECTION);
+        assert tableInfoList != null;
+        if(tableInfoList.size()==0){
+            R.success("数据未发生变化");
+        }
         //保存数据到数据库
         R<Object> result = this.excelTabService.saveOrUpdateInfo(tableInfoList);
         if (!result.isSuccess()) {

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

@@ -489,7 +489,7 @@ public class WbsParamController {
     @GetMapping("/file-title")
     public R<Object> ref(Long projectId) {
         if (StringUtils.isNumber(projectId)) {
-            String sql ="select a.id, a.wbs_id pkeyId  from u_information_query a  join m_wbs_tree_contract b on a.wbs_id=b.p_Key_id where a.name='还未配置提名规则' and a.project_id=?";
+            String sql ="select a.id, b.p_key_id pkeyId  from u_information_query a  join m_wbs_tree_contract b on a.wbs_id=b.p_Key_id where a.name='还未配置提名规则' and a.project_id=?";
             List<Map<String,Object>> listMaps=this.jdbcTemplate.queryForList(sql,projectId);
             if(listMaps.size()>0){
                 List<Long> pkeyIds= listMaps.stream().map(m->Long.parseLong(m.get("pkeyId").toString())).distinct().collect(Collectors.toList());

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

@@ -226,7 +226,7 @@ public class FormulaTurnPoint implements FormulaStrategy {
 
     public void c8103(List<TurnPoint> data,List<NodeTable> nodeTableList,TableElementConverter tec){
         nodeTableList.stream().filter(e-> "m_20220928163111_1575040410223378432".equals(e.getInitTableName())).findFirst().ifPresent(t->{
-            List<FormData> fds= tec.formDataMap.values().stream().filter(k-> "m_20220928163111_1575040410223378432".equals(k.getTableName())&&k.getCoordsList().size()>1).collect(Collectors.toList());
+            List<FormData> fds= tec.formDataMap.values().stream().filter(k-> ("m_20220928163111_1575040410223378432".equals(k.getTableName()))&&k.getCoordsList().size()>1).collect(Collectors.toList());
             /*[{"key":"#2","m":"垫石编号"},{"key":"#3","m":"顶面高程设计"},{"key":"#4","m":"顶面高程实测"},{"key":"#5","m":"顶面高程偏差"},{"key":"#6","m":"顶面四角高差实测"}]*/
             FormData dsbh=null,dmgcsj=null, dmgcsc=null,dmgcpc=null,sjgcsc=null;
             for(FormData u:fds){
@@ -263,6 +263,7 @@ public class FormulaTurnPoint implements FormulaStrategy {
                 Map<Integer,List<Object>> group=tmpList.stream().collect(Collectors.groupingBy(e->ai.getAndIncrement()%fda.length));
                 for(int i=0;i<fda.length;i++){
                     FormData fd= fda[i];
+                    if(fd==null)continue;
                     FormulaUtils.write(fd,group.get(i),true);
                     fd.setUpdate(1);
                 }

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

@@ -375,6 +375,8 @@ public class TableElementConverter implements ITableElementConverter {
             /*这个方法的核心就是把fds的数据按照既定格式(key_xxx_val_y_x)回写到tableInfo,对fds进行tableName分组,非空循环写人*/
             LinkedHashMap<String, List<KeyMapper>> tabs = keyMappers.stream().collect(Collectors.groupingBy(KeyMapper::getCode, LinkedHashMap::new, Collectors.toList()));
             List<FormData> updateList = formDataMap.values().stream().filter(e -> e.getUpdate() == 1 && e.isCurrentNodeElement).collect(Collectors.toList());
+            /*再次核对是否已经被修改*/
+            updateList=updateList.stream().filter(FormData::hasChange).collect(Collectors.toList());
             if (Func.isNotEmpty(updateList)) {
                 for (FormData fd : updateList) {
                     if (fd.getUpdate().equals(1)) {
@@ -405,6 +407,8 @@ public class TableElementConverter implements ITableElementConverter {
             } else {
                 log.put(FormulaLog.OTHER,"公式未插入或者修改任何数据");
             }
+            /*删除无需更新的表*/
+            tableInfoList.removeIf(e->!e.isToBeUpdated());
         }
     }
     public class AfterB implements Converter{

+ 8 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsParamServiceImpl.java

@@ -64,10 +64,18 @@ public class WbsParamServiceImpl extends BaseServiceImpl<WbsParamMapper, WbsPara
                     }
                     if (Func.isNotEmpty(wp)) {
                         return CustomFunction.tree(nodes.stream().map(w->StringUtils.isNotEmpty(w.getFullName())?w.getFullName():w.getNodeName()).collect(Collectors.toList()), wp.getV()).toString();
+                    }else{
+                        System.out.println(wtp.getNodeName()+"找不到文件题名配置");
                     }
+                }else{
+                    return "找不到项目配置信息";
                 }
 
+            }else{
+                return "层级断链";
             }
+        }else {
+            return "找不到节点";
         }
         return NOT_SET;
     }