|
@@ -28,6 +28,7 @@ import org.springblade.core.mp.base.BaseServiceImpl;
|
|
|
import org.springblade.manager.utils.DiffListUtil;
|
|
|
import org.springblade.manager.utils.WbsElementUtil;
|
|
|
import org.springblade.manager.vo.*;
|
|
|
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
import org.springframework.scheduling.annotation.Async;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -456,7 +457,11 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
idList2.addAll(collect);
|
|
|
} else if (pawDTO.getReferenceType().equals("private")) {
|
|
|
//当前私有引用ids
|
|
|
- List<WbsTreePrivate> wbsTreePrivates2 = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getWbsId, pawDTO.getPrimaryKeyId()).eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId()).eq(WbsTreePrivate::getType, 1));
|
|
|
+ List<WbsTreePrivate> wbsTreePrivates2 = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
+ .eq(WbsTreePrivate::getWbsId, pawDTO.getPrimaryKeyId())
|
|
|
+ .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
|
|
|
+ .eq(WbsTreePrivate::getType, 1)
|
|
|
+ );
|
|
|
List<String> collect = wbsTreePrivates2.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
|
|
|
idList2.addAll(collect);
|
|
|
}
|
|
@@ -479,23 +484,30 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
}
|
|
|
|
|
|
if (pawDTO.getReferenceType().equals("private")) {
|
|
|
+ //同步独立表单库数据
|
|
|
+ this.insertDLTabAsync(pawDTO);
|
|
|
+
|
|
|
//获取私有引用项目的wbs树的所有节点、元素表
|
|
|
WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, pawDTO.getPrimaryKeyId()));
|
|
|
- List<WbsTreePrivate> wbsTreePrivateAllOld = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getWbsId, Long.parseLong(wbsTreePrivate.getWbsId())).eq(WbsTreePrivate::getProjectId, Long.parseLong(wbsTreePrivate.getProjectId())).eq(WbsTreePrivate::getStatus, 1));
|
|
|
- List<WbsTreePrivate> WbsTreePrivateTables = wbsTreePrivateAllOld.stream().filter(f -> f.getType() == 2).collect(Collectors.toList());
|
|
|
-
|
|
|
- //获取当前项目私有wbs树下当前所有节点、元素表
|
|
|
- List<WbsTreePrivate> wbsTreePrivatesAllNow = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getWbsId, Long.parseLong(pawDTO.getPrimaryKeyId())).eq(WbsTreePrivate::getProjectId, Long.parseLong(pawDTO.getProjectId())));
|
|
|
- List<WbsTreePrivate> wbsTreePrivateNowTables = wbsTreePrivatesAllNow.stream().filter(f -> f.getType() == 2).collect(Collectors.toList());
|
|
|
+ List<WbsTreePrivate> wbsTreePrivateAllOld = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
+ .eq(WbsTreePrivate::getProjectId, Long.parseLong(wbsTreePrivate.getProjectId()))
|
|
|
+ .eq(WbsTreePrivate::getStatus, 1)
|
|
|
+ .and(obj -> obj.eq(WbsTreePrivate::getWbsId, Long.parseLong(wbsTreePrivate.getWbsId())).or().eq(WbsTreePrivate::getWbsId, null))
|
|
|
+ );
|
|
|
+ List<WbsTreePrivate> WbsTreePrivateTables = wbsTreePrivateAllOld.stream().filter(f -> f.getType() == 2 || f.getType() == 10).collect(Collectors.toList());
|
|
|
+
|
|
|
+ //获取当前项目私有wbs树下当前所有节点、元素表(type=10,独立库引用元素库)
|
|
|
+ List<WbsTreePrivate> wbsTreePrivatesAllNow = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
|
|
|
+ .eq(WbsTreePrivate::getProjectId, Long.parseLong(pawDTO.getProjectId()))
|
|
|
+ .and(obj -> obj.eq(WbsTreePrivate::getWbsId, Long.parseLong(pawDTO.getPrimaryKeyId())).or().eq(WbsTreePrivate::getWbsId, null))
|
|
|
+ );
|
|
|
+ List<WbsTreePrivate> wbsTreePrivateNowTables = wbsTreePrivatesAllNow.stream().filter(f -> f.getType() == 2 || f.getType() == 10).collect(Collectors.toList());
|
|
|
|
|
|
//同步私有wbs节点信息、元素表基础信息到项目级wbs、合同段wbs
|
|
|
this.updateWbsInfoContractAsync(wbsTreePrivateAllOld, wbsTreePrivatesAllNow, pawDTO.getProjectId(), pawDTO.getPrimaryKeyId());
|
|
|
|
|
|
//同步私有-电签匹配数据、默认信息数据
|
|
|
this.insertTextDictInfoAsync(WbsTreePrivateTables, wbsTreePrivateNowTables);
|
|
|
-
|
|
|
- //同步独立表单库数据
|
|
|
- this.insertDLTabAsync(pawDTO);
|
|
|
}
|
|
|
|
|
|
} else {
|
|
@@ -546,7 +558,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
if (saveIds.size() >= 1000) {
|
|
|
String redisValue = bladeRedis.get("submit-wbs-project:" + pawDTO.getProjectId());
|
|
|
if (StringUtils.isNotEmpty(redisValue) && redisValue.equals("1")) {
|
|
|
- throw new ServiceException("请勿重复提交,请60秒后再次尝试!");
|
|
|
+ throw new ServiceException("请勿重复提交,请60秒后再尝试");
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -590,17 +602,43 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
//私有引用-电签匹配数据、默认信息数据
|
|
|
Map<Long, List<TextdictInfo>> textDictInfoData = new HashMap<>();
|
|
|
|
|
|
- //查询出当前wbs树下所有节点、表信息
|
|
|
+ //查询出当前wbs树下所有节点、表信息(type=10独立表)
|
|
|
List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectNodeAndTable(null, pawDTO.getWbsId(), pawDTO.getReferencePrivateWbsProjectId());
|
|
|
|
|
|
+ //获取当前项目下的所有独立表
|
|
|
+ List<WbsTreePrivate> wbsTreePrivatesTableDL = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
|
|
|
+ .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
|
|
|
+ .eq(WbsTreePrivate::getType, 10)
|
|
|
+ .eq(WbsTreePrivate::getParentId, -10)
|
|
|
+ .eq(WbsTreePrivate::getStatus, 1)
|
|
|
+ );
|
|
|
+
|
|
|
//查询所有电签位置配置信息
|
|
|
List<TextdictInfo> textDictInfosAll = textdictInfoMapper.selectList(Wrappers.<TextdictInfo>query().lambda());
|
|
|
|
|
|
for (WbsTreePrivate wbsTreePrivate : wbsTreePrivates) {
|
|
|
- for (String id : saveIds) {
|
|
|
- if (Long.parseLong(id) == (wbsTreePrivate.getId())) {
|
|
|
- addListData.add(wbsTreePrivate);
|
|
|
- } else if (Long.parseLong(id) == (wbsTreePrivate.getParentId()) && wbsTreePrivate.getType() == 2) {
|
|
|
+ if (wbsTreePrivate.getType() == 1 || wbsTreePrivate.getType() == 2) {
|
|
|
+ for (String id : saveIds) {
|
|
|
+ if (Long.parseLong(id) == (wbsTreePrivate.getId())) {
|
|
|
+ addListData.add(wbsTreePrivate);
|
|
|
+
|
|
|
+ } else if (Long.parseLong(id) == (wbsTreePrivate.getParentId()) && wbsTreePrivate.getType() == 2) {
|
|
|
+ addListData.add(wbsTreePrivate);
|
|
|
+
|
|
|
+ //根据元素表pKeyId,获取电签位置匹配信息、编辑默认信息
|
|
|
+ List<TextdictInfo> textDictInfos = textDictInfosAll.stream().filter(f -> ObjectUtils.isNotEmpty(f.getTabId())
|
|
|
+ && f.getTabId().equals(String.valueOf(wbsTreePrivate.getPKeyId()))).collect(Collectors.toList());
|
|
|
+ if (textDictInfos.size() > 0) {
|
|
|
+ textDictInfoData.put(wbsTreePrivate.getPKeyId(), textDictInfos);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (wbsTreePrivate.getType() == 10 && wbsTreePrivate.getParentId() == -10) { //type=10,parentId=-10 独立库
|
|
|
+ //判断是否存在独立表单,存在则不新增
|
|
|
+ List<WbsTreePrivate> collect = wbsTreePrivatesTableDL.stream().filter(f -> f.getId().equals(wbsTreePrivate.getId())).collect(Collectors.toList());
|
|
|
+ if (collect.size() == 0) {
|
|
|
addListData.add(wbsTreePrivate);
|
|
|
|
|
|
//根据元素表pKeyId,获取电签位置匹配信息、编辑默认信息
|
|
@@ -617,16 +655,21 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
WbsTreePrivate wbsTreePrivate = BeanUtil.copyProperties(tree, WbsTreePrivate.class);
|
|
|
if (wbsTreePrivate != null) {
|
|
|
wbsTreePrivate.setPKeyId(SnowFlakeUtil.getId());
|
|
|
- wbsTreePrivate.setWbsId(pawDTO.getPrimaryKeyId());
|
|
|
- wbsTreePrivate.setWbsType(String.valueOf(pawDTO.getWbsType()));
|
|
|
wbsTreePrivate.setProjectId(pawDTO.getProjectId());
|
|
|
wbsTreePrivate.setFullName(wbsTreePrivate.getNodeName());
|
|
|
wbsTreePrivate.setInitTableId(ObjectUtil.isNotEmpty(tree.getInitTableId()) ? String.valueOf(tree.getInitTableId()) : null);
|
|
|
|
|
|
+ if (tree.getType() == 10) { //独立表单数据
|
|
|
+ wbsTreePrivate.setWbsId(null);
|
|
|
+ wbsTreePrivate.setWbsType(null);
|
|
|
+ } else {
|
|
|
+ wbsTreePrivate.setWbsId(pawDTO.getPrimaryKeyId());
|
|
|
+ wbsTreePrivate.setWbsType(String.valueOf(pawDTO.getWbsType()));
|
|
|
+ }
|
|
|
insertData2.add(wbsTreePrivate);
|
|
|
|
|
|
//电签
|
|
|
- if (wbsTreePrivate.getType() == 2) {
|
|
|
+ if (wbsTreePrivate.getType() == 2 || (wbsTreePrivate.getType() == 10 && wbsTreePrivate.getParentId() == -10)) { //type=10,parentId=-10 独立库引用元素库
|
|
|
if (textDictInfoData.size() > 0) {
|
|
|
textDictInfoData.forEach((k, v) -> {
|
|
|
if (tree.getPKeyId().equals(k)) {
|
|
@@ -664,7 +707,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
projectInfoMapper.updateTemplateInfoQuality(pawDTO.getProjectId(), pawDTO.getPrimaryKeyId(), "private");
|
|
|
|
|
|
//新增独立表单库数据
|
|
|
- wbsTreePrivateService.insertDLTab(pawDTO);
|
|
|
+ //wbsTreePrivateService.insertDLTab(pawDTO);
|
|
|
}
|
|
|
if (pawDTO.getWbsType() == 2) { //修改试验关联信息
|
|
|
projectInfoMapper.updateTemplateInfoTrial(pawDTO.getProjectId(), pawDTO.getPrimaryKeyId(), "private");
|
|
@@ -714,14 +757,21 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
}
|
|
|
|
|
|
@Async
|
|
|
- public boolean updateWbsInfoContractAsync(List<WbsTreePrivate> wbsTreePrivates, List<WbsTreePrivate> wbsTreePrivatesAllNow, String projectId, String primaryKeyId) {
|
|
|
+ public boolean updateWbsInfoContractAsync(List<WbsTreePrivate> wbsTreePrivates, List<WbsTreePrivate> wbsTreePrivatesAllNow, String
|
|
|
+ projectId, String primaryKeyId) {
|
|
|
return wbsTreePrivateService.updateBatchByIds2(wbsTreePrivates, wbsTreePrivatesAllNow, projectId, primaryKeyId);
|
|
|
}
|
|
|
|
|
|
- @Async
|
|
|
+ //@Async
|
|
|
public boolean insertDLTabAsync(WbsTreeContractDTO pawDTO) {
|
|
|
- List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateService.getBaseMapper().selectList(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId, pawDTO.getReferencePrivateWbsProjectId()).eq(WbsTreePrivate::getType, 10));
|
|
|
- List<WbsTreePrivate> wbsTreePrivatesNew = wbsTreePrivateService.getBaseMapper().selectList(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId()).eq(WbsTreePrivate::getType, 10));
|
|
|
+ List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateService.getBaseMapper().selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
|
|
|
+ .eq(WbsTreePrivate::getProjectId, pawDTO.getReferencePrivateWbsProjectId())
|
|
|
+ .eq(WbsTreePrivate::getType, 10)
|
|
|
+ );
|
|
|
+ List<WbsTreePrivate> wbsTreePrivatesNew = wbsTreePrivateService.getBaseMapper().selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
|
|
|
+ .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
|
|
|
+ .eq(WbsTreePrivate::getType, 10)
|
|
|
+ );
|
|
|
|
|
|
Iterator<WbsTreePrivate> iterator = wbsTreePrivates.iterator();
|
|
|
while (iterator.hasNext()) {
|