Quellcode durchsuchen

Merge remote-tracking branch 'origin/master'

liuyc vor 1 Jahr
Ursprung
Commit
2feb396f50

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

@@ -66,11 +66,11 @@ public class FormData {
      * 内容:同一个groupId下List<每一页内容>
      * 用于输出
      */
-    private List<ElementData> values;
+    private List<ElementData> values=new ArrayList<>();
     /**
      * 初始内容
      * */
-    private List<ElementData> initial ;
+    private List<ElementData> initial=new ArrayList<>() ;
     /**
      * 当需要偏移处理的时候需要备份原数据,等计算完成还原回去
      */
@@ -255,12 +255,14 @@ public class FormData {
     }
 
     public boolean hasChange(){
-        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);
+        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);
+            }
         }
         return false;
     }

+ 4 - 3
blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java

@@ -1583,15 +1583,15 @@ public class TaskController extends BladeController {
                                 String resultIds = processInstanceIds.stream()
                                         .map(id -> "'" + id + "'")
                                         .collect(Collectors.joining(","));
-                                taskParallelGroupMap = jdbcTemplate.query("select parallel_process_instance_id,process_instance_id,task_user_name,status from u_task_parallel where process_instance_id in(" + resultIds + ") order by id", new BeanPropertyRowMapper<>(TaskParallel.class)).stream().collect(Collectors.groupingBy(TaskParallel::getProcessInstanceId));
+                                taskParallelGroupMap = jdbcTemplate.query("select parallel_process_instance_id,process_instance_id,e_visa_status,task_user,task_user_name,status from u_task_parallel where process_instance_id in(" + resultIds + ") order by id", new BeanPropertyRowMapper<>(TaskParallel.class)).stream().collect(Collectors.groupingBy(TaskParallel::getProcessInstanceId));
                             }
                             Map<String, List<TaskParallel>> finalTaskParallelGroupMap = taskParallelGroupMap;
 
                             for (Task task : taskList) {
                                 List<TaskParallel> taskParallelList = finalTaskParallelGroupMap.get(task.getProcessInstanceId());
                                 for (TaskParallel taskParallel : taskParallelList) {
-                                    //待审批的不进行重签
-                                    if (!(new Integer(1)).equals(taskParallel.getStatus())) {
+                                    //待审批的不进行重签, 存在待审批,但是电签状态是失败的
+                                    if (!(new Integer(1)).equals(taskParallel.getStatus()) || (taskParallel.getEVisaStatus() != null && taskParallel.getEVisaStatus() == 99)) {
                                         TaskApprovalVO approvalVO = new TaskApprovalVO();
                                         approvalVO.setTaskId(task.getId().toString());
                                         approvalVO.setFlag("OK");
@@ -1600,6 +1600,7 @@ public class TaskController extends BladeController {
                                         approvalVO.setFormDataId(task.getFormDataId());
                                         approvalVO.setParallelProcessInstanceId(taskParallel.getParallelProcessInstanceId());
                                         approvalVO.setYsNickName(taskParallel.getTaskUserName());
+                                        approvalVO.setUserId(Long.parseLong(taskParallel.getTaskUser()));
                                         taskApprovalVOS.add(approvalVO);
                                     }
                                 }

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -562,7 +562,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
 
             //保存批次
             TaskBatch taskBatch = new TaskBatch(null, JSONObject.toJSONString(taskApprovalVO));
-            taskBatch.setCreateUser(userId);
+            taskBatch.setCreateUser(taskApprovalVO.getUserId());
             taskBatch.setNickName(nickName);
             taskBatch.setCreateTime(new Date());
             taskList.add(taskBatch);

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

@@ -773,7 +773,7 @@ public static List<FormData>  registerFd(List<String> curTableNames, List<FormDa
     /*当前提交页元素影响到的元素都要重新执行公式*/
         pick(curFormDatas,other,curFormDatas,fds->fds.stream().map(FormData::getCode).collect(Collectors.toSet()));
     /*当前提交页的元素公式依赖加载*/
-        pick(initiator,other,curFormDatas,fds->fds.stream().filter(FormData::executable).flatMap(f->f.getFormula().getRelyList().stream()).collect(Collectors.toSet()));
+        pick(initiator,other,curFormDatas,fds->fds.stream().filter(f->f.executable()&&f.getFormula().getRely()!=null).flatMap(f->f.getFormula().getRelyList().stream()).collect(Collectors.toSet()));
         return curFormDatas;
 }
 

+ 3 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/bean/TableInfo.java

@@ -2,8 +2,10 @@ package org.springblade.manager.bean;
 
 import lombok.Data;
 
+import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author yangyj
@@ -16,6 +18,7 @@ public class TableInfo {
      * 表单数据
      */
     private LinkedHashMap<String, String> dataMap;
+    private Map<String,String> resultMap=new HashMap<>(100);
     private String pkeyId;
     private String contractId;
     private String classify;

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

@@ -421,7 +421,6 @@ public class TextdictInfoController extends BladeController {
 
         List<WbsTreePrivate> wbsTreePrivatesEqual = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
                 .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
-                .eq(WbsTreePrivate::getType, 2)
                 .eq(WbsTreePrivate::getIsDeleted, 0)
                 .eq(WbsTreePrivate::getExcelId, wbsTreePrivate.getExcelId()));
         List<Long> pKeyIds = wbsTreePrivatesEqual.stream().map(WbsTreePrivate::getPKeyId).collect(Collectors.toList());
@@ -478,7 +477,7 @@ public class TextdictInfoController extends BladeController {
         String replace = str1.replace("\\", "\\\\");
 
         //修改同几点的数据
-        if(ids!=null){
+        if(StringUtils.isNotBlank(ids)){
             String updateSqlP = "update m_wbs_tree_private set html_url = '" + replace + "' where p_key_id in ("+ids+") and project_id="+wbsTreePrivate.getProjectId()+"";
             jdbcTemplate.execute(updateSqlP);
         }

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

@@ -2,7 +2,9 @@ package org.springblade.manager.formula.impl;
 
 
 import cn.hutool.log.StaticLog;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.mixsmart.utils.FormulaUtils;
 import com.mixsmart.utils.StringUtils;
 import lombok.Data;
@@ -102,6 +104,9 @@ public class TableElementConverter implements ITableElementConverter {
     /**汇总公式*/
     public List<FormData> summary = new ArrayList<>();
 
+    /**是否使用新流程,默认关闭*/
+    public  boolean isNew=false;
+
     /**根据表名获取对应表页对象*/
     public LinkedList<NodeTable> getTableByName(String initTableName){
         LinkedList<NodeTable> list = new LinkedList<>();
@@ -135,6 +140,8 @@ public class TableElementConverter implements ITableElementConverter {
         this.currentNode = wtc;
         this.tableAll = tableAll;
         this.pkeyIdTableNameMap=tableAll.stream().collect(Collectors.toMap(NodeTable::getPKeyId,NodeTable::getInitTableName));
+        /*开启新流程*/
+        this.isNew=true;
     }
     /*优化测试新增属性end*/
 
@@ -158,7 +165,9 @@ public class TableElementConverter implements ITableElementConverter {
     public Boolean isPresent() {
         return BaseUtils.isNotNull(this.keyMappers, this.formulas, this.nodeId);
     }
-
+    public Boolean isPresent2() {
+        return BaseUtils.isNotNull(this.formDataList, this.nodeId);
+    }
 
     @Override
     public void before() {
@@ -240,12 +249,17 @@ public class TableElementConverter implements ITableElementConverter {
                 LinkedHashMap<String, String> pageData = info.getDataMap();
                 Map<String,Object> tmpMap =formMap.computeIfAbsent(tbn,k->new HashMap<>(100));
                 pageData.forEach((k,v)->{
-                    if (StringUtils.isNotEmpty(v)) {
+                    if (StringUtils.isNotEmpty(v)&&k.startsWith("key_")) {
                         String[] values = v.split("☆");
                         for (String s : values) {
-                            String[] t = s.split("_\\^_");
-                            String[] c = t[1].split("_");
-                            tmpMap.put(StringUtils.join( index,Func.toInt(c[1]), Func.toInt(c[0]), StringPool.AT), t[0].trim());
+                            try {
+                                String[] t = s.split("_\\^_");
+                                String[] c = t[1].split("_");
+                                tmpMap.put(StringUtils.join( index,Func.toInt(c[1]), Func.toInt(c[0]), StringPool.AT), t[0].trim());
+                            }catch (Exception e){
+                                e.printStackTrace();
+                            }
+
                         }
                     }
                 });
@@ -263,7 +277,8 @@ public class TableElementConverter implements ITableElementConverter {
                    }
                    List<Long> pkeyIds= this.tableNamePkeyIdMap.get(fd.getTableName());
                    List<Coords> coordsList= fd.getCoordsList();
-                   List<ElementData> eds =fd.getValues();
+                   List<ElementData> eds =new ArrayList<>();
+                   fd.setValues(eds);
                    Map<String,Object> map = fd.getCellDataVoList().stream().collect(Collectors.toMap(e-> StringUtils.join( pkeyIds.indexOf(e.getPageId()), e.getX(), e.getY(), StringPool.AT), CellDataVo::getValue));
                    if(fd.getIsCurrentSubmitElement()){
                       Map<String,Object> formTableMap =formMap.get(fd.getTableName());
@@ -332,22 +347,54 @@ public class TableElementConverter implements ITableElementConverter {
     }
     public void after2(){
            /*判断需要更新的元素*/
-          List<FormData> updateList =  this.formDataMap.values().stream().filter(e->e.getIsCurrentSubmitElement()&&e.getUpdate()==1&&e.hasChange()).collect(Collectors.toList());
-          List<TableInfo> tableInfoList = this.tableInfoList;
-          Set<String> tableNameSet= updateList.stream().map(FormData::getTableName).collect(Collectors.toSet());
-          List<Long> pkeyIds = new ArrayList<>();
-          for(String tk:tableNameSet){
-              List<Long> tmp = this.tableNamePkeyIdMap.get(tk);
-              if(tmp!=null){
-                  pkeyIds.addAll(tmp);
-              }
-          }
-        /*判断需要更新的tableInfo*/
-         tableInfoList.removeIf(t->!pkeyIds.contains(Long.parseLong(t.getPkeyId())));
-        /*筛查需要更新的元素数据*/
-    }
+          List<FormData> updateList =  this.formDataMap.values().stream().filter(e->e.getIsCurrentSubmitElement()&&e.hasChange()).collect(Collectors.toList());
+        if(updateList.size()>0) {
+            List<TableInfo> tableInfoList = this.tableInfoList;
+            Set<String> tableNameSet = updateList.stream().map(FormData::getTableName).collect(Collectors.toSet());
+            List<Long> pkeyIds = new ArrayList<>();
+            for (String tk : tableNameSet) {
+                List<Long> tmp = this.tableNamePkeyIdMap.get(tk);
+                if (tmp != null) {
+                    pkeyIds.addAll(tmp);
+                }
+            }
+            /*判断需要更新的tableInfo*/
+            tableInfoList.removeIf(t -> !pkeyIds.contains(Long.parseLong(t.getPkeyId())));
+            Map<String, List<FormData>> updateGroup = updateList.stream().collect(Collectors.groupingBy(FormData::getTableName));
+            Map<String,TableInfo> tableInfoMap= this.tableInfoList.stream().collect(Collectors.toMap(TableInfo::getPkeyId,t->t));
+            updateGroup.forEach((k, v) -> {
+                List<Long> tmp = this.tableNamePkeyIdMap.get(k);
+                v.forEach(fd->{
+                    List<List<ElementData>> pages=BaseUtils.splitList(fd.getValues(),fd.getCoordsList().size());
+                    for(int i=0;i<tmp.size();i++){
+                        TableInfo tbi= tableInfoMap.get(tmp.get(i).toString());
+                        Map<String,String> tmpMap = pages.get(i).stream().filter(e->!e.isEmpty()).collect(Collectors.toMap(e->fd.getKey()+"__"+e.getY()+"_"+e.getX(), ElementData::stringValue));
+                        if(tmpMap.size()>0){
+                            tbi.getResultMap().putAll(tmpMap);
+                        }
+                    }
+                });
+            });
+        }
 
+    }
 
+    public void write(JSONArray dataArray){
+        if(dataArray!=null&&this.tableInfoList!=null) {
+            JSONObject one = dataArray.getJSONObject(0);
+            dataArray.clear();
+            @SuppressWarnings("unchecked")
+            Map<String,String> templateMap = (Map<String,String>)JSON.parseObject(JSON.toJSONString(one), Map.class);
+            List<String> removeKeys = new ArrayList<>(templateMap.keySet());
+            removeKeys.stream().filter(k->k.startsWith("key_")).forEach(templateMap::remove);
+            this.tableInfoList.stream().filter(b->b.getResultMap().size()>0).forEach(b->{
+                Map<String,String> tmp = new HashMap<>(templateMap);
+                tmp.put("p_key_id",b.getPkeyId());
+                tmp.putAll(b.getResultMap());
+                dataArray.add(JSONObject.parse(JSON.toJSONString(tmp)));
+            });
+        }
+    }
 
     public String recovery(List<ElementData> dataList) {
         if (Func.isNotEmpty(dataList)) {

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

@@ -444,10 +444,11 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                     tec.setExecuteType(type);
                     tec.setContractId(contractId);
                     tec.setProjectId(projectId);
-                    if (tec.isPresent()) {
+                    if (tec.isPresent2()) {
                         tec.before2();
                         this.formulaService.execute2(tec);
                         tec.after2();
+                        tec.write(dataArray);
                     } else {
                         tec.getLog().put(FormulaLog.OTHER, "没有执行任何公式");
                     }

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

@@ -88,10 +88,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
     public final static String E="E";
     /**公式参数*/
     public final static String FMOT="OP";
-
-    /**是否使用新流程*/
-    public final static  boolean isNew=false;
-
+    
     /**是否使用表单公式*/
     public final static  boolean isForm=true;
 
@@ -182,7 +179,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
     /**补充缺失的元素依赖*/
    public void checkingMissingList(){
        List<String> missingList = new ArrayList<>();
-       if(isNew){
+       if(tec.isNew){
            tec.formDataList.forEach(fd->{
                if (fd.executable()) {
                    relyParse(fd.getFormula());
@@ -709,7 +706,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
     public void bindParamFormula(List<WbsParam> total){
         Map<String,Formula> formulaIdMap = this.wpService.formulaKeyMap(total.stream().map(WbsParam::getK).collect(Collectors.toList()));
         /*查找无绑定公式且单元格只有一个的当前表单元素*/
-        if(isNew){
+        if(tec.isNew){
             List<FormData> notFormulaFds=  tec.formDataList.stream().filter(e->e.getIsCurrentSubmitElement()&&e.getFormula()==null&&e.getCoordsList().size()==1).collect(Collectors.toList());
             if(notFormulaFds.size()>0){
                 notFormulaFds.forEach(e->{
@@ -777,7 +774,9 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             AtomicInteger sort = new AtomicInteger();
             tec.formDataList.forEach(e -> e.setSort(sort.getAndAdd(1000)));
             /*收集汇总阶段执行的公式*/
-            summaryPre();
+            if(!tec.isNew) {
+                summaryPre();
+            }
         }catch (Exception e){
             e.printStackTrace();
         }
@@ -895,7 +894,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         /*通用计算*/
         generalCalc();
         if(ExecuteType.INSPECTION.equals(tec.getExecuteType())) {
-            if(isNew){
+            if(tec.isNew){
                 //TODO
             }else{
                 /*汇总信息处理*/
@@ -966,7 +965,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                             List<FormData>  ele = new ArrayList<>();
                             relyList.forEach(rely->{
                                 FormData formData=  this.tec.getFormDataMap().get(rely);
-                                if(formData!=null&&formData.getValues().size()>0){
+                                if(!formData.empty()){
                                     ele.add(formData);
                                 }
                             });
@@ -1532,7 +1531,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             }
         }
         /*检查超页情况*/
-        if(isNew){
+        if(tec.isNew){
             tec.formDataMap.values().stream().filter(e->e.getIsCurrentSubmitElement()&&e.getUpdate()==1&&e.getAddPages()>0).sorted(Comparator.comparing(FormData::getAddPages).reversed())
                     .collect(Collectors.groupingBy(FormData::getTableName,LinkedHashMap::new,Collectors.toList())).values()
                     .forEach(l->copy2(l.get(0)));