chenr 7 mēneši atpakaļ
vecāks
revīzija
5a383060ef

+ 71 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -1245,13 +1245,81 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                     List<WbsTreeContract> list = stringListEntry.getValue();
                     for (WbsTreeContract wbsTreeContract : list) {
                         if(wbsTreeContract.getIsCopeTab()==null||wbsTreeContract.getIsCopeTab()!=2){
-
+                            WbsTreeContract wbsInfo = this.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
+                                .eq(WbsTreeContract::getPKeyId, wbsTreeContract.getPKeyId()));
+                            List<WbsTreeContract> wbsTreeContractList = this.getBaseMapper().selectList(Wrappers.<WbsTreeContract>query().lambda()
+                                .likeRight(WbsTreeContract::getNodeName,wbsInfo.getNodeName())
+                                .eq(WbsTreeContract::getContractId, wbsInfo.getContractId())
+                                .eq(WbsTreeContract::getParentId, wbsInfo.getParentId())
+                                .eq(WbsTreeContract::getTableOwner, wbsInfo.getTableOwner()));
+                            List<WbsTreeContract> wbsTreeContractList2 = wbsTreeContractList.stream().sorted(Comparator.comparing(WbsTreeContract::getCreateTime).reversed()).collect(Collectors.toList());
+                            Set<String> strings = wbsTreeContractList2.stream().map(o -> o.getNodeName()).collect(Collectors.toSet());
+                            List<WbsTreeContract>wbsTreeContractList3=wbsTreeContractList.stream().sorted(Comparator.comparing(WbsTreeContract::getCreateTime)).collect(Collectors.toList());
+                            Boolean flag=false;
+                            if(strings.size()!=wbsTreeContractList3.size()){
+                                flag=true;
+                                for (int i = 0; i < wbsTreeContractList3.size(); i++) {
+                                    if(wbsTreeContractList3.get(i).getIsCopeTab()!=null&&wbsTreeContractList3.get(i).getIsCopeTab().equals(Integer.valueOf(2))){
+                                        String  nodeName=wbsTreeContractList3.get(0).getNodeName();
+                                        nodeName=nodeName+"__"+(i);
+                                        wbsTreeContractList3.get(i).setNodeName(nodeName);
+                                        String update="UPDATE m_wbs_tree_contract Set node_name= "+"'"+wbsTreeContractList3.get(i).getNodeName()+"'"+" WHERE p_key_id="+wbsTreeContractList3.get(i).getPKeyId();
+                                        jdbcTemplate.update(update);
+                                    }
+                                }
+                            }
+                            //新增
+                            long tabGroupId = SnowFlakeUtil.getId();
+                            long newPkId = SnowFlakeUtil.getId();
+                            WbsTreeContract wbsTreeContract1 = new WbsTreeContract();
+                            BeanUtil.copy(wbsInfo, wbsTreeContract1);
+                            wbsTreeContract1.setPKeyId(newPkId);
+                            wbsTreeContract1.setCreateTime(new Date());
+                            wbsTreeContract1.setTabGroupId(tabGroupId);
+                            String nodeName;
+                            if(flag){
+                                nodeName=wbsTreeContractList3.get(wbsTreeContractList3.size()-1).getNodeName();
+                            }else {
+                                nodeName=  wbsTreeContractList2.get(0).getNodeName();
+                            }
+                            if (nodeName.indexOf("__") >= 0) {
+                                String[] oldName = nodeName.split("__");
+                                nodeName = oldName[0] + "__" + (Integer.parseInt(oldName[1]) + 1);
+                            } else {
+                                nodeName = nodeName + "__" + 1;
+                            }
+                            wbsTreeContract1.setNodeName(nodeName);
+                            wbsTreeContract1.setIsCopeTab(2);
+                            wbsTreeContract1.setIsTabPdf(1); // pdf 不能预览
+                            wbsTreeContract1.setIsBussShow(1); // 是否隐藏表
+                            wbsTreeContract1.setTabFileType(1);//没有上传附件
+                            wbsTreeContract1.setPdfUrl("");
+                            wbsTreeContract.setIsDeleted(1);
+                            String tabName = wbsTreeContract.getInitTableName();
+                            // 字段查询 并去掉公式字段
+                            String colkeys = "SELECT GROUP_CONCAT(COLUMN_NAME) as colkeys from information_schema.COLUMNS c where c.table_name='" + tabName + "' and COLUMN_NAME not in('id','p_key_id')";
+                            Map<String, Object> stringObjectMap = jdbcTemplate.queryForMap(colkeys);
+                            colkeys = stringObjectMap.get("colkeys") + "";
+                            // 复制表数据
+                            String querySql = "insert into " + tabName + " (id,p_key_id," + colkeys + ") select '" + newPkId + "','" + newPkId + "'," + colkeys + " from " + tabName + " where p_key_id=" + wbsTreeContract1.getPKeyId();
+                            jdbcTemplate.execute(querySql);
+                            this.save(wbsTreeContract1);
+                            for (WbsTreeContract wbsTreeCont : wbsTreeContractList2) {
+                                UpdateWrapper<WbsTreeContract> updateWrapper = new UpdateWrapper<>();
+                                updateWrapper.in("p_key_id", wbsTreeCont.getPKeyId() + "");
+                                updateWrapper.set("tab_group_id", tabGroupId);
+                                this.update(updateWrapper);
+                            }
                         }
                     }
-
                 }
             }
-
+            tabs = baseMapper.selectList(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getParentId, node.getId())
+                .eq(WbsTreeContract::getContractId, node.getContractId()).eq(WbsTreeContract::getType, 2)
+                .eq(WbsTreeContract::getWbsId, node.getWbsId())
+                .apply("(wbs_type is null OR wbs_type = " + node.getWbsType() + ")")
+                .eq(WbsTreeContract::getStatus, 1)
+                .ne(WbsTreeContract::getIsBussShow, 2)); //隐藏的表单不操作
             Map<Long, WbsTreeContract> tabMaps = tabs.stream().collect(Collectors.toMap(WbsTreeContract::getPKeyId, Function.identity()));
 
             //初始化表