Explorar o código

Merge remote-tracking branch 'origin/master' into master

yangyj %!s(int64=2) %!d(string=hai) anos
pai
achega
cae020269e

+ 5 - 1
blade-ops/blade-flow/src/main/java/org/springblade/flow/business/feign/NewFlowClientImpl.java

@@ -62,7 +62,11 @@ public class NewFlowClientImpl implements NewFlowClient {
     public R<Boolean> completeApprovalTask(String taskId, String processInstanceId, String comment) {
         //添加审批意见
         if(StringUtils.isNoneBlank(processInstanceId, comment)){
-            this.taskService.addComment(taskId, processInstanceId, comment);
+            try{
+                this.taskService.addComment(taskId, processInstanceId, comment);
+            }catch (Exception e){
+                e.printStackTrace();
+            }
         }
         //完成任务
         this.taskService.complete(taskId, Kv.create());

+ 21 - 5
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/SaveContractLogVO.java

@@ -2,24 +2,28 @@ package org.springblade.business.vo;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.apache.http.client.utils.DateUtils;
+import org.springblade.core.tool.utils.DateUtil;
+
+import java.util.Date;
 
 @Data
 public class SaveContractLogVO {
 
     @ApiModelProperty("列表数据主键")
-    private Long id;
+    private Long dataId;
 
     @ApiModelProperty("项目ID")
-    private String projectId;
+    private Long projectId;
 
     @ApiModelProperty("合同段ID")
-    private String contractId;
+    private Long contractId;
 
     @ApiModelProperty("日志填报的节点ID(唯一键)")
-    private String wbsNodeId;
+    private Long wbsNodeId;
 
     @ApiModelProperty("填报的日志类型")
-    private String wbsNodeType;
+    private Integer wbsNodeType;
 
     @ApiModelProperty("填报日期,所选的日期")
     private String recordTime;
@@ -27,4 +31,16 @@ public class SaveContractLogVO {
     @ApiModelProperty("关联工序的ids")
     private String correlationId;
 
+    public SaveContractLogVO(Long businessId, String projectId, String contractId, Long wbsNodeId, Integer wbsNodeType, String recordTime, String correlationId){
+        this.dataId = businessId;
+        this.projectId = Long.parseLong(projectId);
+        this.contractId = Long.parseLong(contractId);
+        this.wbsNodeId = wbsNodeId;
+        this.wbsNodeType = wbsNodeType;
+        this.recordTime = recordTime;
+        this.correlationId = correlationId;
+    }
+
+    public SaveContractLogVO(){}
+
 }

+ 2 - 0
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/ContractLogClientImpl.java

@@ -7,6 +7,7 @@ import org.springblade.business.entity.ContractLog;
 import org.springblade.business.feign.ContractLogClient;
 import org.springblade.business.service.IContractLogService;
 import org.springblade.business.vo.SaveContractLogVO;
+import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springframework.beans.BeanUtils;
@@ -35,6 +36,7 @@ public class ContractLogClientImpl implements ContractLogClient {
             }
         } else {
             //新增
+            contractLog.setId(SnowFlakeUtil.getId());
             contractLog.setCreateUser(AuthUtil.getUserId());
             contractLog.setCreateUserName(AuthUtil.getUserName());
 

+ 1 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/InformationQueryMapper.xml

@@ -125,6 +125,7 @@
                     wtc.contract_id = #{contractId}
                 and wtc.parent_id = #{parentId}
                 and wtc.is_deleted= '0'
+                AND wtc.type = #{classify}
                 group by wtc.p_key_id
             ) AS querys
         ) AS querys ON wtc.p_key_id = querys.pKeyId

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

@@ -23,4 +23,18 @@ public class TableInfo {
      */
     private String isFirst;
 
+    /**
+     * huangjn 2022-09-14 15:27 是否是日志填报
+     */
+    private String isTheLog;
+
+    /**
+     * huangjn 2022-09-14 15:27 日志ID
+     */
+    private String theLogId;
+
+    private String linkTabIds;
+
+    private String recordTime;
+
 }

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

@@ -1064,7 +1064,9 @@ public class ExcelTabController extends BladeController {
 
         WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
                 .eq(WbsTreeContract::getPKeyId, pkeyId));
-
+        if(wbsTreeContract==null){
+            return R.data(reData);
+        }
         QueryWrapper<TextdictInfo> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("type", 4);
         queryWrapper.eq("tab_id", wbsTreeContract.getIsTypePrivatePid());

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.java

@@ -3,6 +3,7 @@ package org.springblade.manager.mapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.manager.dto.WbsTreeDTO2;
+import org.springblade.manager.entity.TextdictInfo;
 import org.springblade.manager.entity.WbsFormElement;
 import org.springblade.manager.entity.WbsTree;
 import org.springblade.manager.injector.EasyBaseMapper;
@@ -88,4 +89,5 @@ public interface WbsTreeMapper extends EasyBaseMapper<WbsTree> {
 
     int isThereAField(@Param("initTableName") String initTableName, @Param("keyId") String keyId);
 
+    List<TextdictInfo> selectTextDictInfoByTabId(Long pKeyId);
 }

+ 4 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.xml

@@ -469,5 +469,9 @@
         select COUNT(*) from information_schema.columns WHERE table_name = #{initTableName} and column_name = #{keyId}
     </select>
 
+    <select id="selectTextDictInfoByTabId" resultType="org.springblade.manager.entity.TextdictInfo">
+        select * from m_textdict_info where tab_id = #{pKeyId} and is_deleted = 0
+    </select>
+
 
 </mapper>

+ 148 - 47
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -31,31 +31,23 @@ import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
 import org.jsoup.select.Elements;
+import org.springblade.business.feign.ContractLogClient;
 import org.springblade.business.feign.InformationQueryClient;
+import org.springblade.business.vo.SaveContractLogVO;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.oss.model.BladeFile;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.node.ForestNodeMerger;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.IoUtil;
-import org.springblade.core.tool.utils.ResourceUtil;
-import org.springblade.core.tool.utils.StringPool;
+import org.springblade.core.tool.utils.*;
 import org.springblade.manager.bean.TableInfo;
 import org.springblade.manager.dto.FormData;
-import org.springblade.manager.entity.ExcelTab;
-import org.springblade.manager.entity.Formula;
-import org.springblade.manager.entity.WbsTree;
-import org.springblade.manager.entity.WbsTreeContract;
+import org.springblade.manager.entity.*;
 import org.springblade.manager.formula.KeyMapper;
 import org.springblade.manager.formula.impl.TableElementConverter;
-import org.springblade.manager.service.IFormulaService;
-import org.springblade.manager.service.IWbsParamService;
-import org.springblade.manager.service.IWbsTreeContractService;
-import org.springblade.manager.service.IWbsTreeService;
+import org.springblade.manager.service.*;
 import org.springblade.manager.vo.ExceTabTreVO;
 import org.springblade.manager.vo.ExcelTabVO;
 import org.springblade.manager.mapper.ExcelTabMapper;
-import org.springblade.manager.service.IExcelTabService;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.manager.vo.ExcelTabWbsTypeVO;
 import org.springblade.manager.vo.WbsTreeVO;
@@ -89,6 +81,10 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 
 	private final IWbsParamService wbsParamService;
 
+	private final IWbsTreePrivateService wbsTreePrivateService;
+
+	private final ContractLogClient contractLogClient;
+
 	@Override
 	public IPage<ExcelTabVO> selectExcelTabPage(IPage<ExcelTabVO> page, ExcelTabVO excelTab) {
 		return page.setRecords(baseMapper.selectExcelTabPage(page, excelTab));
@@ -170,6 +166,30 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 				}
 				//huangjn 判断是否是首件
 
+				//huangjn 判断是否是日志
+				if(dataInfo2.containsKey("isTheLog")){
+					tableInfo.setIsTheLog(dataInfo2.getString("isTheLog"));
+				}
+				//huangjn 判断是否是日志
+
+				//huangjn 日志ID
+				if(dataInfo2.containsKey("theLogId")){
+					tableInfo.setTheLogId(dataInfo2.getString("theLogId"));
+				}
+				//huangjn 日志ID
+
+				//huangjn 日志勾选的工序
+				if(dataInfo2.containsKey("linkTabIds")){
+					tableInfo.setLinkTabIds(dataInfo2.getString("linkTabIds"));
+				}
+				//huangjn 日志勾选的工序
+
+				//huangjn 日志所选时间
+				if(dataInfo2.containsKey("recordTime")){
+					tableInfo.setRecordTime(dataInfo2.getString("recordTime"));
+				}
+				//huangjn 日志所选时间
+
 				dataInfo2.fluentRemove("contractId")
 						 .fluentRemove("pkeyId")
 						 .fluentRemove("p_key_id")
@@ -178,6 +198,10 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 				         .fluentRemove("pickerKey")
 				         .fluentRemove("id")
 						 .fluentRemove("isFirst")
+						 .fluentRemove("isTheLog")
+						 .fluentRemove("theLogId")
+						 .fluentRemove("linkTabIds")
+						 .fluentRemove("recordTime")
 				         .fluentRemove("");
 				// 计算数据
 				LinkedHashMap<String,List<String>> dataMap =dataInfo2.keySet().stream().filter(e->e.contains("__")).collect(Collectors.groupingBy(e->e.split("__")[0], LinkedHashMap<String,List<String>>::new,Collectors.toList()));
@@ -247,55 +271,132 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 		}
 	}
 
+	/**
+	 * 保存日志
+	 */
+	private void saveOrUpdateTheLog(List<TableInfo> tableInfoList){
+		String businessId = tableInfoList.get(0).getTheLogId();
+		if(StringUtils.isEmpty(businessId)){
+			businessId = SnowFlakeUtil.getId().toString();
+		}
+		String linkTabIds = tableInfoList.get(0).getLinkTabIds();
+		String recordTime = tableInfoList.get(0).getRecordTime();
+		if(StringUtils.isEmpty(recordTime)){
+			//为空,默认今天
+			recordTime = DateUtil.format(new Date(), "yyyy-MM-dd");
+		}
+
+		for(TableInfo tableInfo : tableInfoList){
+			WbsTreePrivate wbsTreePrivate = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, tableInfo.getPkeyId()));
+			if(wbsTreePrivate == null){
+				continue;
+			}
+			String tabName = wbsTreePrivate.getInitTableName();
+
+			if(StringUtils.isNotEmpty(businessId)){
+				//删除旧数据
+				String delSql = "delete from "+tabName+" where group_id = " + businessId;
+				this.jdbcTemplate.execute(delSql);
+			}
+
+			//拼接SQL
+			StringBuilder sql = new StringBuilder("INSERT INTO " + tabName ),
+						  keySql = new StringBuilder("id, group_id"),
+					      valSql = new StringBuilder("" + SnowFlakeUtil.getId() + ", " + businessId);
+			//参数
+			LinkedHashMap<String,String> dataMap2 = tableInfo.getDataMap();
+			for(String key : dataMap2.keySet()){
+				keySql.append(", ").append(key);
+				valSql.append(", '").append(dataMap2.get(key)).append("'");
+			}
+
+			sql.append("(").append(keySql).append(")").append(" values(").append(valSql).append(")");
+
+			//新增数据
+			try{
+				this.jdbcTemplate.execute(sql.toString());
+			}catch (Exception e){
+				e.printStackTrace();
+			}
+		}
 
+		//查询绑定的节点
+		WbsTreePrivate tableNode = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, tableInfoList.get(0).getPkeyId()));
+		WbsTreePrivate parentNode = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId, tableNode.getProjectId()).eq(WbsTreePrivate::getId, tableNode.getParentId()));
+
+		//保存日志记录
+		this.contractLogClient.saveContractLog(new SaveContractLogVO(
+				Long.parseLong(businessId),
+				tableInfoList.get(0).getProjectId(),
+				tableInfoList.get(0).getContractId(),
+				parentNode.getPKeyId(),
+				parentNode.getMajorDataType(),
+				recordTime,
+				linkTabIds
+		));
 
+	}
 
 	@Override
 	public void saveOrUpdateInfo(List<TableInfo> tableInfoList) {
 		if(ListUtils.isNotEmpty(tableInfoList)){
-			for(TableInfo tableInfo:tableInfoList){
-				WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
-						.eq(WbsTreeContract::getPKeyId, tableInfo.getPkeyId()));
-				if(wbsTreeContract == null){
-					continue;
-				}
+			if(StringUtils.isNotEmpty(tableInfoList.get(0).getIsTheLog())){
+				//日志填报
+				this.saveOrUpdateTheLog(tableInfoList);
+
+			} else {
+				//施工资料填报
+				for(TableInfo tableInfo:tableInfoList){
+					WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
+							.eq(WbsTreeContract::getPKeyId, tableInfo.getPkeyId()));
+					if(wbsTreeContract == null){
+						continue;
+					}
 
-				String tabName = wbsTreeContract.getInitTableName();
+					String tabName = wbsTreeContract.getInitTableName();
 
-				// 判读修改还是 添加
-				String delSql = "delete from "+tabName+" where p_key_id="+tableInfo.getPkeyId();
-				jdbcTemplate.execute(delSql);
+					// 判读修改还是 添加
+					String delSql = "delete from "+tabName+" where p_key_id="+tableInfo.getPkeyId();
+					jdbcTemplate.execute(delSql);
 
-				String sqlInfo="";
-				LinkedHashMap<String,String> dataMap2 = tableInfo.getDataMap();
-				sqlInfo = "INSERT INTO "+tabName+" ( ";
-				String keyStr = "id,";
-				String valStr = SnowFlakeUtil.getId() + ",";
-				for (String keys : dataMap2.keySet()){
-					keyStr += keys+",";
-					valStr += "'"+dataMap2.get(keys)+"',";
+					String sqlInfo="";
+					LinkedHashMap<String,String> dataMap2 = tableInfo.getDataMap();
+					sqlInfo = "INSERT INTO "+tabName+" ( ";
+					String keyStr = "id,";
+					String valStr = SnowFlakeUtil.getId() + ",";
+					for (String keys : dataMap2.keySet()){
+						keyStr += keys+",";
+						valStr += "'"+dataMap2.get(keys)+"',";
+					}
+					keyStr=keyStr.substring(0,keyStr.lastIndexOf(","));
+					valStr=valStr.substring(0,valStr.lastIndexOf(","));
+					sqlInfo = sqlInfo + keyStr+") VALUES (" +valStr +")";
+
+					UpdateWrapper<WbsTreeContract> updateWrapper = new UpdateWrapper<>();
+					updateWrapper.in("p_key_id",tableInfo.getPkeyId());
+					updateWrapper.set("is_tab_pdf",2);
+					wbsTreeContractService.update(updateWrapper);
+
+					jdbcTemplate.execute(sqlInfo);
+					// pdf 预览添加
+					//this.getBussPdfInfo(Long.parseLong(tableInfo.getPkeyId()));
 				}
-				keyStr=keyStr.substring(0,keyStr.lastIndexOf(","));
-				valStr=valStr.substring(0,valStr.lastIndexOf(","));
-				sqlInfo = sqlInfo + keyStr+") VALUES (" +valStr +")";
 
-				WbsTreeContract wbsTreeContractByP = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
-							.eq(WbsTreeContract::getId, wbsTreeContract.getParentId()).eq(WbsTreeContract::getContractId,tableInfo.getContractId()));
+				try{
+					//获取节点
+					WbsTreeContract wbsTreeContract = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId, tableInfoList.get(0).getPkeyId()));
+
+					WbsTreeContract wbsTreeContractByP = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
+							.eq(WbsTreeContract::getId, wbsTreeContract.getParentId()).eq(WbsTreeContract::getContractId, wbsTreeContract.getContractId()));
 					//处理文件提名
-				String fileName = this.wbsParamService.createFileTitle(Func.isNotEmpty(wbsTreeContractByP.getOldId())? Long.valueOf(wbsTreeContractByP.getOldId()) :wbsTreeContractByP.getId(), Long.parseLong(wbsTreeContractByP.getContractId()));
+					String fileName = this.wbsParamService.createFileTitle(Func.isNotEmpty(wbsTreeContractByP.getOldId())? Long.valueOf(wbsTreeContractByP.getOldId()) :wbsTreeContractByP.getId(), Long.parseLong(wbsTreeContractByP.getContractId()));
 					fileName = StringUtils.isNotEmpty(fileName) ? fileName : "缺少文件提名配置";
 
 					//huangjn 保存成功后调用生成资料查询列表数据
-				this.informationQueryClient.saveOrUpdateInformationQueryData(wbsTreeContractByP.getPKeyId()+"", "业务ID(主要将来给首件使用)", fileName, Integer.parseInt(tableInfo.getClassify()), 2,"是否是首件(临时,暂时没用到)");
-
-				UpdateWrapper<WbsTreeContract> updateWrapper = new UpdateWrapper<>();
-				updateWrapper.in("p_key_id",tableInfo.getPkeyId());
-				updateWrapper.set("is_tab_pdf",2);
-				wbsTreeContractService.update(updateWrapper);
-
-				jdbcTemplate.execute(sqlInfo);
-				// pdf 预览添加
-			   //this.getBussPdfInfo(Long.parseLong(tableInfo.getPkeyId()));
+					this.informationQueryClient.saveOrUpdateInformationQueryData(wbsTreeContractByP.getPKeyId()+"", "业务ID(主要将来给首件使用)", fileName, Integer.parseInt(tableInfoList.get(0).getClassify()), 2,"是否是首件(临时,暂时没用到)");
+				}catch (Exception e){
+					e.printStackTrace();
+				}
 			}
 		}
 	}

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

@@ -9,10 +9,7 @@ import org.springblade.core.redis.cache.BladeRedis;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.constant.BladeConstant;
 import org.springblade.core.tool.node.ForestNodeMerger;
-import org.springblade.core.tool.utils.DateUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.StringPool;
-import org.springblade.core.tool.utils.StringUtil;
+import org.springblade.core.tool.utils.*;
 import org.springblade.manager.aop.AvoidRepeatableCommit;
 import org.springblade.manager.dto.FormElementDTO;
 import org.springblade.manager.dto.WbsTreeBatchImportDTO;
@@ -26,23 +23,17 @@ import org.springblade.manager.service.IWbsFormElementService;
 import org.springblade.manager.service.IWbsTreeService;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.manager.unit.DiffListUtil;
-import org.springblade.manager.unit.RedisUtil;
 import org.springblade.manager.unit.WbsElementUtil;
 import org.springblade.manager.vo.*;
-import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.jdbc.support.JdbcUtils;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.sql.DataSource;
 import java.io.File;
 import java.io.IOException;
-import java.sql.*;
 import java.util.*;
-import java.util.concurrent.Executor;
 import java.util.stream.Collectors;
 
 @Service
@@ -57,9 +48,11 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     private final ProjectInfoMapper projectInfoMapper;
     private final WbsTreeContractMapper wbsTreeContractMapper;
     private final ContractInfoMapper contractInfoMapper;
+    private final TextdictInfoServiceImpl textDictInfoService;
     private final FormulaMapper formulaMapper;
     private final BladeRedis bladeRedis;
 
+
     @Override
     public IPage<WbsTreeVO> selectWbsTreePage(IPage<WbsTreeVO> page, WbsTreeVO wbsTree) {
         return page.setRecords(baseMapper.selectWbsTreePage(page, wbsTree));
@@ -929,10 +922,12 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                     }
                 }
 
-                //数据初始化节点-引用公有
-                List<WbsTreePrivate> insertData = new ArrayList<>();
-                //数据初始化节点-引用私有
+                //公有-数据初始化节点
+                List<WbsTreePrivate> insertData1 = new ArrayList<>();
+                //私有-数据初始化节点
                 List<WbsTreePrivate> insertData2 = new ArrayList<>();
+                //私有-电签匹配数据、默认信息数据
+                List<TextdictInfo> insertData3 = new ArrayList<>();
 
                 if (pawDTO.getReferenceType().equals("public")) {
                     //引用公有
@@ -956,7 +951,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 
                     addListData.forEach(tree -> {
                         WbsTreePrivate wbsTreePrivate2 = getWbsTreePrivate1(tree, pawDTO);
-                        insertData.add(wbsTreePrivate2);
+                        insertData1.add(wbsTreePrivate2);
                     });
 
                 } else if (pawDTO.getReferenceType().equals("private")) {
@@ -964,6 +959,9 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                     //查询所有私有节点、表 saveIds=新增的节点id
                     List<WbsTreePrivate> addListData = new ArrayList<>();
 
+                    //私有引用-电签匹配数据、默认信息数据
+                    Map<Long, List<TextdictInfo>> textDictInfoData = new HashMap<>();
+
                     //查询出当前wbs树下所有节点、表信息
                     List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectNodeAndTable(null, pawDTO.getWbsId(), pawDTO.getReferencePrivateWbsProjectId());
 
@@ -975,27 +973,50 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                             } else if (Long.parseLong(id) == (wbsTreePrivate.getParentId()) && wbsTreePrivate.getType() == 2) {
                                 //表
                                 addListData.add(wbsTreePrivate);
+
+                                //根据元素表pKeyId,获取电签位置匹配信息、编辑默认信息
+                                List<TextdictInfo> textDictInfos = baseMapper.selectTextDictInfoByTabId(wbsTreePrivate.getPKeyId());
+                                if (textDictInfos.size() > 0) {
+                                    textDictInfoData.put(wbsTreePrivate.getPKeyId(), textDictInfos);
+                                }
                             }
                         }
                     }
 
                     addListData.forEach(tree -> {
+                        //构造参数
                         WbsTreePrivate wbsTreePrivate2 = getWbsTreePrivate2(tree, pawDTO);
                         insertData2.add(wbsTreePrivate2);
+
+                        //构造电签位置配置信息、编辑默认信息数据
+                        if (wbsTreePrivate2.getType() == 2) {
+                            if (textDictInfoData.size() > 0) {
+                                textDictInfoData.forEach((k, v) -> {
+                                    if (tree.getPKeyId().equals(k)) {
+                                        for (TextdictInfo textdictInfo : v) {
+                                            textdictInfo.setTabId(String.valueOf(wbsTreePrivate2.getPKeyId()));
+                                            textdictInfo.setId(SnowFlakeUtil.getId());
+                                        }
+                                        insertData3.addAll(v);
+                                    }
+                                });
+                            }
+                        }
                     });
                 }
 
                 //新增
                 if (pawDTO.getReferenceType().equals("public")) {
-                    //wbsTreePrivateMapper.insertBatchSomeColumn(insertData);
-                    insertBatch(insertData, 100);
+                    insertBatch(insertData1, 100);
 
                     projectInfoMapper.updateTemplateIdById(pawDTO.getProjectId(), pawDTO.getWbsId(), "public");
 
                 } else if (pawDTO.getReferenceType().equals("private")) {
-                    //wbsTreePrivateMapper.insertBatchSomeColumn(insertData2);
                     insertBatch(insertData2, 100);
 
+                    //同步电签位置配置信息、编辑默认信息数据
+                    textDictInfoService.saveBatch(insertData3, 100);
+
                     projectInfoMapper.updateTemplateIdById(pawDTO.getProjectId(), pawDTO.getPrimaryKeyId(), "private");
                 }