|
@@ -78,7 +78,7 @@ public class WbsSynchronousServiceImpl {
|
|
|
//
|
|
|
try {
|
|
|
Integer range = wbsTreeSynchronousRecord.getRange();
|
|
|
- switch (range){
|
|
|
+ switch (range) {
|
|
|
case 1:
|
|
|
//同步项目
|
|
|
insertPrivateNode(wbsTreeSynchronousRecord);
|
|
@@ -96,19 +96,7 @@ public class WbsSynchronousServiceImpl {
|
|
|
syncPrivateForceForm(wbsTreeSynchronousRecord);
|
|
|
break;
|
|
|
default:
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- if (range == 1) {
|
|
|
-
|
|
|
- } else if (range == 2) {
|
|
|
-
|
|
|
- } else if (range == 3) {
|
|
|
-
|
|
|
- } else if (range == 4) {
|
|
|
-
|
|
|
- } else{
|
|
|
- throw new ServiceException("同步类型错误");
|
|
|
+ throw new ServiceException("同步类型错误");
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
synchronousRecordMapper.update(null, Wrappers.<WbsTreeSynchronousRecord>lambdaUpdate()
|
|
@@ -123,29 +111,36 @@ public class WbsSynchronousServiceImpl {
|
|
|
|
|
|
/**
|
|
|
* 同步所有相同元素的表单
|
|
|
+ *
|
|
|
* @param wbsTreeSynchronousRecord
|
|
|
*/
|
|
|
private void syncPrivateAllForm(WbsTreeSynchronousRecord wbsTreeSynchronousRecord) {
|
|
|
String nodeId = wbsTreeSynchronousRecord.getNodeId();
|
|
|
WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectById(nodeId);
|
|
|
+ if (wbsTreePrivate == null) {
|
|
|
+ throw new ServiceException("节点/表单 不存在");
|
|
|
+ }
|
|
|
String initTableName = wbsTreePrivate.getInitTableName();
|
|
|
- if(StringUtil.isBlank(initTableName)){
|
|
|
+ if (StringUtil.isBlank(initTableName)) {
|
|
|
throw new ServiceException("表单未绑定实体表");
|
|
|
}
|
|
|
//在指定项目下指定实体表相同的数据
|
|
|
List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
|
|
|
.eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
|
|
|
+ .ne(WbsTreePrivate::getPKeyId, nodeId)
|
|
|
.eq(WbsTreePrivate::getInitTableName, initTableName)
|
|
|
);
|
|
|
+ if(CollectionUtil.isEmpty(wbsTreePrivates)){
|
|
|
+ throw new ServiceException("当前项目没有相同实体表的其他表单");
|
|
|
+ }
|
|
|
//清表也相同的数据
|
|
|
List<WbsTreePrivate> collect = wbsTreePrivates.stream().filter(f ->
|
|
|
Objects.equals(f.getExcelId(), wbsTreePrivate.getExcelId())
|
|
|
).collect(Collectors.toList());
|
|
|
//清表不同的数据
|
|
|
List<WbsTreePrivate> noExcelIdEq = wbsTreePrivates.stream().filter(f -> !Objects.equals(f.getExcelId(), wbsTreePrivate.getExcelId())).collect(Collectors.toList());
|
|
|
- if(CollectionUtil.isEmpty(noExcelIdEq)){
|
|
|
-
|
|
|
- StringBuffer sb = new StringBuffer();
|
|
|
+ if (CollectionUtil.isNotEmpty(noExcelIdEq)) {
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
for (WbsTreePrivate treePrivate : noExcelIdEq) {
|
|
|
List<WbsTreePrivate> list = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery().in(WbsTreePrivate::getPKeyId, Func.toLongList(treePrivate.getAncestorsPId())));
|
|
|
List<String> nodeNames = list.stream().map(WbsTreePrivate::getNodeName).collect(Collectors.toList());
|
|
@@ -156,23 +151,26 @@ public class WbsSynchronousServiceImpl {
|
|
|
}
|
|
|
List<Long> ids = collect.stream().map(WbsTreePrivate::getPKeyId).collect(Collectors.toList());
|
|
|
//修改数据
|
|
|
- wbsSynchronousEViSaService.updateSyncPrivateForm(wbsTreePrivate.getHtmlUrl(),ids);
|
|
|
+ wbsSynchronousEViSaService.updateSyncPrivateForm(wbsTreePrivate.getHtmlUrl(), ids, wbsTreeSynchronousRecord.getId());
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- *
|
|
|
* 强制同步表单
|
|
|
+ *
|
|
|
* @param wbsTreeSynchronousRecord
|
|
|
*/
|
|
|
private void syncPrivateForceForm(WbsTreeSynchronousRecord wbsTreeSynchronousRecord) {
|
|
|
String nodeId = wbsTreeSynchronousRecord.getNodeId();
|
|
|
- if(nodeId.contains(",")){
|
|
|
+ if (nodeId.contains(",")) {
|
|
|
throw new ServiceException("不能选中多个节点");
|
|
|
}
|
|
|
String formIds = wbsTreeSynchronousRecord.getFormIds();
|
|
|
//选中的表单
|
|
|
WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectById(formIds);
|
|
|
- wbsSynchronousEViSaService.syncPrivateForceForm(wbsTreePrivate,nodeId);
|
|
|
+ if (wbsTreePrivate == null) {
|
|
|
+ throw new ServiceException("表单不存在");
|
|
|
+ }
|
|
|
+ wbsSynchronousEViSaService.syncPrivateForceForm(wbsTreePrivate, nodeId, wbsTreeSynchronousRecord.getId());
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -204,9 +202,6 @@ public class WbsSynchronousServiceImpl {
|
|
|
ProjectInfo projectInfo = projectInfoMapper.selectOne(Wrappers.<ProjectInfo>lambdaQuery().eq(ProjectInfo::getId, wbsTreeSynchronousRecord.getProjectId()));
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
for (String primaryKeyId : nodeIds) {
|
|
|
if (StringUtils.isNotEmpty(primaryKeyId)) {
|
|
|
//获取当前节点对应节点信息
|
|
@@ -217,16 +212,15 @@ public class WbsSynchronousServiceImpl {
|
|
|
//当前项目绑定的是公有模板还是私有项目
|
|
|
Boolean isPublic = false;
|
|
|
if (
|
|
|
- ("1".equals(wbsTreePrivate.getWbsType()) && ("public").equals(projectInfo.getReferenceWbsTemplateType())) ||
|
|
|
- ("2".equals(wbsTreePrivate.getWbsType()) && ("public").equals(projectInfo.getReferenceWbsTemplateTypeTrial())) ||
|
|
|
- ("3".equals(wbsTreePrivate.getWbsType()) && ("public").equals(projectInfo.getReferenceWbsTemplateTypeMeter())) ||
|
|
|
+ ("1".equals(wbsTreePrivate.getWbsType()) && ("public").equals(projectInfo.getReferenceWbsTemplateType())) ||
|
|
|
+ ("2".equals(wbsTreePrivate.getWbsType()) && ("public").equals(projectInfo.getReferenceWbsTemplateTypeTrial())) ||
|
|
|
+ ("3".equals(wbsTreePrivate.getWbsType()) && ("public").equals(projectInfo.getReferenceWbsTemplateTypeMeter())) ||
|
|
|
("5".equals(wbsTreePrivate.getWbsType()) && ("public").equals(projectInfo.getReferenceWbsTemplateTypeLar()))
|
|
|
) {
|
|
|
isPublic = true;
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
//当前项目模板对应的节点信息
|
|
|
List<WbsTreePrivate> templateNodes = new ArrayList<>();
|
|
|
//质检
|
|
@@ -386,8 +380,12 @@ public class WbsSynchronousServiceImpl {
|
|
|
editPrivateNode.setExcelId(templateNode.getExcelId());
|
|
|
//绑定实体表
|
|
|
editPrivateNode.setInitTableName(templateNode.getInitTableName());
|
|
|
- //封装Html路径
|
|
|
- if (StringUtil.isBlank(editPrivateNode.getHtmlUrl()) || !Objects.equals(editPrivateNode.getHtmlUrl(), templateNode.getHtmlUrl())) {
|
|
|
+
|
|
|
+ if(StringUtil.isBlank(templateNode.getHtmlUrl())){
|
|
|
+ throw new ServiceException(templateNode.getNodeName() + "HTML文件不存在");
|
|
|
+ }
|
|
|
+ //封装Html路径 根据模板html copy一份到自己项目节点上
|
|
|
+ if (StringUtil.isNotBlank(editPrivateNode.getHtmlUrl()) && (StringUtil.isBlank(editPrivateNode.getHtmlUrl()) || !Objects.equals(editPrivateNode.getHtmlUrl(), templateNode.getHtmlUrl()))) {
|
|
|
String[] split = templateNode.getHtmlUrl().split("/");
|
|
|
String htmlUrl = file_path + "privateUrlCopy/" + projectInfo.getId() + "/" + split[split.length - 1];
|
|
|
File file_in = ResourceUtil.getFile(templateNode.getHtmlUrl());
|