|
@@ -34,10 +34,7 @@ import org.springblade.manager.dto.FormElementDTO;
|
|
|
import org.springblade.manager.dto.WbsTreeContractDTO;
|
|
|
import org.springblade.manager.entity.*;
|
|
|
import org.springblade.manager.excel.WbsExcelUtil;
|
|
|
-import org.springblade.manager.mapper.WbsInfoMapper;
|
|
|
-import org.springblade.manager.mapper.WbsTreeContractMapper;
|
|
|
-import org.springblade.manager.mapper.WbsTreeMapper;
|
|
|
-import org.springblade.manager.mapper.WbsTreePrivateMapper;
|
|
|
+import org.springblade.manager.mapper.*;
|
|
|
import org.springblade.manager.service.IWbsFormElementService;
|
|
|
import org.springblade.manager.service.IWbsTreeService;
|
|
|
import org.springblade.core.mp.base.BaseServiceImpl;
|
|
@@ -72,6 +69,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
private final WbsTreeContractMapper wbsTreeContractMapper;
|
|
|
private final WbsTreePrivateMapper wbsTreePrivateMapper;
|
|
|
private final WbsTreePrivateServiceImpl wbsTreePrivateService;
|
|
|
+ private final ProjectInfoMapper projectInfoMapper;
|
|
|
|
|
|
|
|
|
@Override
|
|
@@ -254,70 +252,133 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public Boolean submitWbsTreeInProject(WbsTreeContractDTO pawDTO) {
|
|
|
+ public String submitWbsTreeInProject(WbsTreeContractDTO pawDTO) {
|
|
|
String wbsTreeIds = pawDTO.getWbsTreeIds();
|
|
|
if (StringUtils.isEmpty(wbsTreeIds)) {
|
|
|
- return false;
|
|
|
+ return "1";
|
|
|
}
|
|
|
String[] ids = wbsTreeIds.split(",");
|
|
|
List<String> idList1 = Arrays.asList(ids);
|
|
|
List<String> idList2 = new ArrayList<>();
|
|
|
//查询出当前私有库下所有的wbs节点
|
|
|
QueryWrapper<WbsTreePrivate> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq("wbs_id", pawDTO.getWbsId());
|
|
|
queryWrapper.eq("project_id", pawDTO.getProjectId());
|
|
|
+ queryWrapper.eq("type", 1);
|
|
|
List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectList(queryWrapper);
|
|
|
for (WbsTreePrivate wbsTreePrivate : wbsTreePrivates) {
|
|
|
idList2.add(String.valueOf(wbsTreePrivate.getId()));
|
|
|
}
|
|
|
- //比对
|
|
|
List<String> diffrent = WbsTreeContractServiceImpl.getDiffrent(idList1, idList2);
|
|
|
- if (diffrent.size() == 0) { //相同
|
|
|
- return false;
|
|
|
- } else { //不相同
|
|
|
- if (idList1.size() > idList2.size()) {//根据ids新增多余项目私有wbs树节点
|
|
|
+ diffrent.forEach(System.out::print);
|
|
|
+ if (diffrent.size() == 0) {
|
|
|
+ List<String> tableId1 = new ArrayList<>();
|
|
|
+ List<String> tableId2 = new ArrayList<>();
|
|
|
+ //查找wbs总树节点下是否新增了元素表,进行同步更新到wbs私有树中
|
|
|
+ List<WbsTree> allNodeList = findAllNodeList(wbsTreeIds);
|
|
|
+ List<WbsTree> wbsTreeListAll = new ArrayList<>();
|
|
|
+ for (WbsTree wbsTree : allNodeList) {
|
|
|
+ System.out.println("wbsTree.getId" + wbsTree.getId());
|
|
|
+ QueryWrapper<WbsTree> queryWrapper1 = new QueryWrapper<>();
|
|
|
+ queryWrapper1.eq("wbs_id", pawDTO.getWbsId());
|
|
|
+ queryWrapper1.eq("type", 2);
|
|
|
+ queryWrapper1.eq("parent_id", wbsTree.getId());
|
|
|
+ List<WbsTree> wbsTreeList = wbsTreeMapper.selectList(queryWrapper1);
|
|
|
+ wbsTreeListAll.addAll(wbsTreeList);
|
|
|
+ }
|
|
|
+ for (WbsTree wbsTree : wbsTreeListAll) {
|
|
|
+ tableId1.add(String.valueOf(wbsTree.getId()));
|
|
|
+ }
|
|
|
+ //获取项目私有树下所有的元素表
|
|
|
+ QueryWrapper<WbsTreePrivate> queryWrapper3 = new QueryWrapper<>();
|
|
|
+ queryWrapper3.eq("wbs_id", pawDTO.getWbsId());
|
|
|
+ queryWrapper3.eq("project_id", pawDTO.getProjectId());
|
|
|
+ queryWrapper3.eq("type", 2);
|
|
|
+ List<WbsTreePrivate> wbsTreePrivates1 = wbsTreePrivateMapper.selectList(queryWrapper3);
|
|
|
+ for (WbsTreePrivate wbsTreePrivate : wbsTreePrivates1) {
|
|
|
+ tableId2.add(String.valueOf(wbsTreePrivate.getId()));
|
|
|
+ }
|
|
|
+ List<String> diffrent1 = WbsTreeContractServiceImpl.getDiffrent(tableId1, tableId2);
|
|
|
+ if (diffrent1.size() == 0) {
|
|
|
+ return "2";
|
|
|
+ } else {
|
|
|
+ if (tableId1.size() > tableId2.size()) {
|
|
|
+ //新增同步元素表
|
|
|
+ for (String tableId : diffrent1) {
|
|
|
+ WbsTree wbsTree = wbsTreeMapper.selectById(tableId);
|
|
|
+ wbsTreePrivateMapper.insertCombination1(wbsTree, pawDTO.getProjectId());
|
|
|
+ }
|
|
|
+ return "3";
|
|
|
+ }
|
|
|
+ //暂未说明是否要同步删除私有库元素表
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (idList1.size() > idList2.size()) {
|
|
|
for (String id : diffrent) {
|
|
|
//项目私有wbs节点库存在该节点且为删除状态,那么修改is_deleted=0,否则新增
|
|
|
WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectByCondition2(id, pawDTO.getProjectId(), pawDTO.getWbsId());
|
|
|
if (wbsTreePrivate != null) {
|
|
|
+ //修改该节点
|
|
|
wbsTreePrivateMapper.updateByCondition(id, pawDTO.getProjectId(), pawDTO.getWbsId());
|
|
|
+ //修改该节点下元素表
|
|
|
+ wbsTreePrivateMapper.updateTableByCondition(id, pawDTO.getProjectId(), pawDTO.getWbsId());
|
|
|
} else {
|
|
|
- //新增
|
|
|
- //获取WbsTree对象(此处引用WBS公共库节点)
|
|
|
+ //此处引用WBS公共库节点
|
|
|
WbsTree wbsTree = wbsTreeMapper.selectById(id);
|
|
|
if (wbsTree != null) {
|
|
|
Integer row = wbsTreePrivateMapper.insertCombination1(wbsTree, pawDTO.getProjectId());
|
|
|
- if (row > 0) {
|
|
|
+ //根据wbsTreeId就是子级的parentId判断该节点是否存在元素表type=2的节点,查询该节点下是否有元素表
|
|
|
+ Long tableParentId = wbsTree.getId();
|
|
|
+ List<WbsTree> wbsTreeTableList = wbsTreeMapper.selectIsTable(tableParentId);
|
|
|
+ wbsTreeTableList.forEach(System.out::print);
|
|
|
+ if (wbsTreeTableList.size() > 0) {
|
|
|
+ //新增元素表
|
|
|
+ for (WbsTree tree : wbsTreeTableList) {
|
|
|
+ wbsTreePrivateMapper.insertCombination1(tree, pawDTO.getProjectId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //初始化合同段wbs私有树
|
|
|
+ Integer row2 = wbsTreeContractMapper.insertWbsTreeContract2(wbsTree, pawDTO.getProjectId(), pawDTO.getContractId());
|
|
|
+ if (row > 0 && row2 > 0) {
|
|
|
logger.info(wbsTree.getId().toString(), "项目wbs私有树操作成功");
|
|
|
}
|
|
|
+ //保存引用模板id
|
|
|
+ projectInfoMapper.updateTemplateIdById(pawDTO.getProjectId(), pawDTO.getWbsId());
|
|
|
+ pawDTO.setTemplateProjectId(pawDTO.getWbsId());
|
|
|
}
|
|
|
- //获取WbsTreePrivate对象(此处引用其他项目WBS私有库节点)
|
|
|
- WbsTreePrivate wbsTreePrivate1 = wbsTreePrivateMapper.selectById(id);
|
|
|
+ //引用其他项目WBS私有库节点
|
|
|
+ WbsTreePrivate wbsTreePrivate1 = wbsTreePrivateMapper.selectByCondition(id, pawDTO.getTemplateProjectId());
|
|
|
if (wbsTreePrivate1 != null) {
|
|
|
- Integer row = wbsTreePrivateMapper.insertCombination2(wbsTreePrivate1);
|
|
|
- if (row > 0) {
|
|
|
+ Integer row = wbsTreePrivateMapper.insertCombination2(wbsTreePrivate1, pawDTO.getProjectId());
|
|
|
+ //根据wbsTreePrivate1Id就是子级的parentId判断该节点是否存在元素表type=2的节点,查询该节点下是否有元素表
|
|
|
+ Long tableParentId = wbsTreePrivate1.getId();
|
|
|
+ List<WbsTree> wbsTreeTableList = wbsTreePrivateMapper.selectIsTable(tableParentId);
|
|
|
+ if (wbsTreeTableList.size() > 0) {
|
|
|
+ for (WbsTree tree : wbsTreeTableList) {
|
|
|
+ wbsTreePrivateMapper.insertCombination1(tree, pawDTO.getProjectId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //初始化合同段wbs私有树
|
|
|
+ Integer row2 = wbsTreeContractMapper.insertWbsTreeContract1(pawDTO.getProjectId(), wbsTreePrivate1);
|
|
|
+ if (row > 0 && row2 > 0) {
|
|
|
logger.info(wbsTreePrivate1.getId().toString(), "项目wbs私有树操作成功");
|
|
|
}
|
|
|
+ //保存引用模板id
|
|
|
+ projectInfoMapper.updateTemplateIdById(pawDTO.getProjectId(), pawDTO.getTemplateProjectId());
|
|
|
+ pawDTO.setTemplateProjectId(pawDTO.getTemplateProjectId());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- } else {//根据id、wbsID、projectId逻辑删除当前多余的项目私有wbs树节点
|
|
|
+ } else {
|
|
|
for (String id : diffrent) {
|
|
|
- Integer row = wbsTreePrivateMapper.deleteByCondition(id, pawDTO.getWbsId(), pawDTO.getProjectId());
|
|
|
- if (row > 0) {
|
|
|
- logger.info(id, "项目wbs私有树操作成功");
|
|
|
- }
|
|
|
+ //逻辑删除当前节点
|
|
|
+ wbsTreePrivateMapper.deleteByCondition(id, pawDTO.getWbsId(), pawDTO.getProjectId());
|
|
|
+ //逻辑删除当前节点下元素表 id = parentId
|
|
|
+ wbsTreePrivateMapper.deleteByCondition2(id, pawDTO.getWbsId(), pawDTO.getProjectId());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- //新增WBS私有树节点下元素表信息
|
|
|
- //获取当前项目下所有元素表信息
|
|
|
- QueryWrapper<WbsTree> queryWrapper1 = new QueryWrapper<>();
|
|
|
- wbsTreeMapper.selectList(queryWrapper1);
|
|
|
-
|
|
|
-
|
|
|
- return true;
|
|
|
-
|
|
|
-
|
|
|
+ return "4";
|
|
|
}
|
|
|
|
|
|
public List<WbsTree> findAllNodeList(String wbsTreeIds) {
|