|  | @@ -26,6 +26,7 @@ import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
 | 
	
		
			
				|  |  |  import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
 | 
	
		
			
				|  |  |  import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
 | 
	
		
			
				|  |  |  import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
 | 
	
		
			
				|  |  | +import org.apache.commons.lang.StringEscapeUtils;
 | 
	
		
			
				|  |  |  import org.apache.commons.lang.StringUtils;
 | 
	
		
			
				|  |  |  import org.springblade.common.utils.SnowFlakeUtil;
 | 
	
		
			
				|  |  |  import org.springblade.core.log.exception.ServiceException;
 | 
	
	
		
			
				|  | @@ -331,17 +332,17 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 | 
	
		
			
				|  |  |      public String submitWbsTreeInProject(WbsTreeContractDTO pawDTO) {
 | 
	
		
			
				|  |  |          String wbsTreeIds = pawDTO.getWbsTreeIds();
 | 
	
		
			
				|  |  |          /*if (StringUtils.isEmpty(wbsTreeIds)) {
 | 
	
		
			
				|  |  | -            return "1";
 | 
	
		
			
				|  |  | +            throw new ServiceException("请选择需要关联的节点树");
 | 
	
		
			
				|  |  |          }*/
 | 
	
		
			
				|  |  |          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);
 | 
	
		
			
				|  |  | +        List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
 | 
	
		
			
				|  |  | +                .eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId())
 | 
	
		
			
				|  |  | +                .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
 | 
	
		
			
				|  |  | +                .eq(WbsTreePrivate::getType, 1)
 | 
	
		
			
				|  |  | +        );
 | 
	
		
			
				|  |  |          for (WbsTreePrivate wbsTreePrivate : wbsTreePrivates) {
 | 
	
		
			
				|  |  |              idList2.add(String.valueOf(wbsTreePrivate.getId()));
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -353,28 +354,28 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 | 
	
		
			
				|  |  |              List<WbsTree> allNodeList = findAllNodeList(wbsTreeIds);
 | 
	
		
			
				|  |  |              List<WbsTree> wbsTreeListAll = new ArrayList<>();
 | 
	
		
			
				|  |  |              for (WbsTree wbsTree : allNodeList) {
 | 
	
		
			
				|  |  | -                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);
 | 
	
		
			
				|  |  | +                List<WbsTree> wbsTreeList = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
 | 
	
		
			
				|  |  | +                        .eq(WbsTree::getWbsId, pawDTO.getWbsId())
 | 
	
		
			
				|  |  | +                        .eq(WbsTree::getType, 2)
 | 
	
		
			
				|  |  | +                        .eq(WbsTree::getParentId, wbsTree.getId())
 | 
	
		
			
				|  |  | +                );
 | 
	
		
			
				|  |  |                  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);
 | 
	
		
			
				|  |  | +            List<WbsTreePrivate> wbsTreePrivates1 = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
 | 
	
		
			
				|  |  | +                    .eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId())
 | 
	
		
			
				|  |  | +                    .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
 | 
	
		
			
				|  |  | +                    .eq(WbsTreePrivate::getType, 2)
 | 
	
		
			
				|  |  | +            );
 | 
	
		
			
				|  |  |              for (WbsTreePrivate wbsTreePrivate : wbsTreePrivates1) {
 | 
	
		
			
				|  |  |                  tableId2.add(String.valueOf(wbsTreePrivate.getId()));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              List<String> diffrent1 = WbsTreeContractServiceImpl.getDiffrent(tableId1, tableId2);
 | 
	
		
			
				|  |  |              if (diffrent1.size() == 0) {
 | 
	
		
			
				|  |  | -                return "2";
 | 
	
		
			
				|  |  | +                throw new ServiceException("未进行任何操作");
 | 
	
		
			
				|  |  |              } else {
 | 
	
		
			
				|  |  |                  if (tableId1.size() > tableId2.size()) {
 | 
	
		
			
				|  |  |                      //同步元素表
 | 
	
	
		
			
				|  | @@ -383,15 +384,19 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 | 
	
		
			
				|  |  |                          Long snowId1 = SnowFlakeUtil.getId();
 | 
	
		
			
				|  |  |                          wbsTreePrivateMapper.insertCombination1(snowId1, wbsTree, pawDTO.getWbsType(), pawDTO.getProjectId());
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  | -                    return "3";
 | 
	
		
			
				|  |  | +                    return "1";
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -                //TODO 暂未说明是否要同步删除
 | 
	
		
			
				|  |  | +                //TODO 是否要同步删除元素表
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  |              if (idList1.size() > idList2.size()) {
 | 
	
		
			
				|  |  | +                //新增前去删除当前项目已经引用的旧的私有节点,避免重复引用
 | 
	
		
			
				|  |  | +                wbsTreePrivateMapper.delete(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId()));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                  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());
 | 
	
	
		
			
				|  | @@ -411,15 +416,14 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 | 
	
		
			
				|  |  |                                      //新增元素表
 | 
	
		
			
				|  |  |                                      for (WbsTree tree : wbsTreeTableList) {
 | 
	
		
			
				|  |  |                                          //判重
 | 
	
		
			
				|  |  | -                                        QueryWrapper<WbsTreePrivate> queryWrapper1 = new QueryWrapper<>();
 | 
	
		
			
				|  |  | -                                        queryWrapper1.eq("id", tree.getId());
 | 
	
		
			
				|  |  | -                                        queryWrapper1.eq("wbs_id", pawDTO.getWbsId());
 | 
	
		
			
				|  |  | -                                        queryWrapper1.eq("project_id", pawDTO.getProjectId());
 | 
	
		
			
				|  |  | -                                        queryWrapper1.eq("parent_id", tree.getParentId());
 | 
	
		
			
				|  |  | -                                        queryWrapper1.eq("dept_name", tree.getDeptName());
 | 
	
		
			
				|  |  | -                                        queryWrapper1.eq("type", 2);
 | 
	
		
			
				|  |  | -                                        WbsTreePrivate wbsTreePrivates1 = wbsTreePrivateMapper.selectOne(queryWrapper1);
 | 
	
		
			
				|  |  | -                                        System.out.println(wbsTreePrivates1 + " wbsTreePrivates1 ");
 | 
	
		
			
				|  |  | +                                        WbsTreePrivate wbsTreePrivates1 = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
 | 
	
		
			
				|  |  | +                                                .eq(WbsTreePrivate::getId, tree.getId())
 | 
	
		
			
				|  |  | +                                                .eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId())
 | 
	
		
			
				|  |  | +                                                .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
 | 
	
		
			
				|  |  | +                                                .eq(WbsTreePrivate::getParentId, tree.getParentId())
 | 
	
		
			
				|  |  | +                                                .eq(WbsTreePrivate::getDeptName, tree.getDeptName())
 | 
	
		
			
				|  |  | +                                                .eq(WbsTreePrivate::getType, 2)
 | 
	
		
			
				|  |  | +                                        );
 | 
	
		
			
				|  |  |                                          if (wbsTreePrivates1 == null) {
 | 
	
		
			
				|  |  |                                              Long snowId1 = SnowFlakeUtil.getId();
 | 
	
		
			
				|  |  |                                              wbsTreePrivateMapper.insertCombination1(snowId1, tree, pawDTO.getWbsType(), pawDTO.getProjectId());
 | 
	
	
		
			
				|  | @@ -434,22 +438,27 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 | 
	
		
			
				|  |  |                              WbsTreePrivate wbsTreePrivate1 = wbsTreePrivateMapper.selectByCondition(id, pawDTO.getWbsId(), pawDTO.getReferencePrivateWbsProjectId());
 | 
	
		
			
				|  |  |                              //引用的私有库根节点primaryKeyId,赋值给新增的私有树wbsId字段
 | 
	
		
			
				|  |  |                              String wbsId = String.valueOf(pawDTO.getPrimaryKeyId());
 | 
	
		
			
				|  |  | +                            if (wbsTreePrivate1 == null) {
 | 
	
		
			
				|  |  | +                                throw new ServiceException("当前WBS私有树不存在,请重新选择");
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  |                              wbsTreePrivate1.setWbsId(wbsId);
 | 
	
		
			
				|  |  |                              Long snowId = SnowFlakeUtil.getId();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                            //新增
 | 
	
		
			
				|  |  |                              wbsTreePrivateMapper.insertCombination2(snowId, wbsTreePrivate1, pawDTO.getProjectId());  //pawDTO.getProjectId() 为当前项目id
 | 
	
		
			
				|  |  |                              //查询该节点下是否有元素表
 | 
	
		
			
				|  |  |                              List<WbsTree> wbsTreeTableList = wbsTreePrivateMapper.selectIsTable(wbsTreePrivate1.getId(), pawDTO.getReferencePrivateWbsProjectId());
 | 
	
		
			
				|  |  |                              if (wbsTreeTableList.size() > 0) {
 | 
	
		
			
				|  |  |                                  for (WbsTree tree : wbsTreeTableList) {
 | 
	
		
			
				|  |  |                                      //判重
 | 
	
		
			
				|  |  | -                                    QueryWrapper<WbsTreePrivate> queryWrapper2 = new QueryWrapper<>();
 | 
	
		
			
				|  |  | -                                    queryWrapper2.eq("id", tree.getId());
 | 
	
		
			
				|  |  | -                                    queryWrapper2.eq("wbs_id", pawDTO.getWbsId());
 | 
	
		
			
				|  |  | -                                    queryWrapper2.eq("project_id", pawDTO.getProjectId());
 | 
	
		
			
				|  |  | -                                    queryWrapper2.eq("parent_id", tree.getParentId());
 | 
	
		
			
				|  |  | -                                    queryWrapper2.eq("dept_name", tree.getDeptName());
 | 
	
		
			
				|  |  | -                                    queryWrapper2.eq("type", 2);
 | 
	
		
			
				|  |  | -                                    WbsTreePrivate wbsTreePrivates1 = wbsTreePrivateMapper.selectOne(queryWrapper2);
 | 
	
		
			
				|  |  | +                                    WbsTreePrivate wbsTreePrivates1 = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
 | 
	
		
			
				|  |  | +                                            .eq(WbsTreePrivate::getId, tree.getId())
 | 
	
		
			
				|  |  | +                                            .eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId())
 | 
	
		
			
				|  |  | +                                            .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
 | 
	
		
			
				|  |  | +                                            .eq(WbsTreePrivate::getParentId, tree.getParentId())
 | 
	
		
			
				|  |  | +                                            .eq(WbsTreePrivate::getDeptName, tree.getDeptName())
 | 
	
		
			
				|  |  | +                                            .eq(WbsTreePrivate::getType, 2)
 | 
	
		
			
				|  |  | +                                    );
 | 
	
		
			
				|  |  |                                      if (wbsTreePrivates1 == null) {
 | 
	
		
			
				|  |  |                                          Long snowId1 = SnowFlakeUtil.getId();
 | 
	
		
			
				|  |  |                                          tree.setWbsId(String.valueOf(pawDTO.getPrimaryKeyId()));
 | 
	
	
		
			
				|  | @@ -471,7 +480,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        return "4";
 | 
	
		
			
				|  |  | +        return "2";
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public List<WbsTree> findAllNodeList(String wbsTreeIds) {
 | 
	
	
		
			
				|  | @@ -514,21 +523,13 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          String deptName = formElementDTO.getDeptName();
 | 
	
		
			
				|  |  | -        if (deptName.length() > 50 || deptName.length() < 1) {
 | 
	
		
			
				|  |  | -            throw new ServiceException("表名长度错误,输入范围1-50个字符长度");
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        if (deptName.contains(".")) {
 | 
	
		
			
				|  |  | -            deptName = deptName.replace(".", "");
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        if (deptName.contains(" ")) {
 | 
	
		
			
				|  |  | -            deptName = deptName.replace(" ", "");
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        if (deptName.contains("_")) {
 | 
	
		
			
				|  |  | -            deptName = deptName.replace("_", "");
 | 
	
		
			
				|  |  | +        if (deptName.length() > 100 || deptName.length() < 1) {
 | 
	
		
			
				|  |  | +            throw new ServiceException("表名长度错误,输入范围1-100个字符长度");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          //初始化表名
 | 
	
		
			
				|  |  | -        String realName = getFirstSpell(deptName);
 | 
	
		
			
				|  |  | -        String newTableName = "m_wbs_f" + DateUtil.time().substring(8, 14) + "_" + realName;
 | 
	
		
			
				|  |  | +        //String realName = getFirstSpell(deptName);
 | 
	
		
			
				|  |  | +        Long id = SnowFlakeUtil.getId();
 | 
	
		
			
				|  |  | +        String newTableName = "m_wbs_form_" + DateUtil.time() + "_" + id.toString();
 | 
	
		
			
				|  |  |          formElementDTO.setInitTableName(newTableName);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //创建元素表
 |