浏览代码

Merge remote-tracking branch 'origin/master' into master

yangyj 2 年之前
父节点
当前提交
9bf1461b68

+ 6 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/RangeInfo.java

@@ -2,6 +2,7 @@ package org.springblade.manager.dto;
 
 import com.alibaba.fastjson.annotation.JSONField;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 import org.springblade.common.utils.BaseUtils;
 import org.springblade.core.tool.utils.Func;
 
@@ -14,7 +15,12 @@ import java.util.stream.Collectors;
  * @Date 2022/9/22 17:52
  * @description TODO
  */
+@Data
 public class RangeInfo {
+
+    @ApiModelProperty( value = "方向",required = true)
+    private String direction;
+
     @ApiModelProperty(
             value = "设计值",
             required = true

+ 6 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ExcelTab.java

@@ -119,4 +119,10 @@ public class ExcelTab extends BaseEntity {
     @ApiModelProperty(value = "html路径")
     private String templateFileUrl;
 
+    /**
+     * 实体表ID
+     */
+    @ApiModelProperty(value = "实体表ID")
+    private String tabId;
+
 }

+ 11 - 8
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -454,8 +454,6 @@ public class ExcelTabController extends BladeController {
     })
     public R<List<ExceTabTreVO>> saveLinkeTab(Long exceTabId, Long tabId) throws IOException {
         String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
-        //String file_path = "C:\\Users\\泓创开发\\Desktop";
-
         // 关联 私有项目 wbs 数据信息
         WbsTreePrivate wbsTree = new WbsTreePrivate();
         wbsTree.setPKeyId(tabId);
@@ -473,8 +471,9 @@ public class ExcelTabController extends BladeController {
         updateWrapper.set("excel_id", exceTabId);
 
         // 复制模版htmlURL
+
         File file_in = ResourceUtil.getFile(excelTab.getHtmlUrl());
-        // File file_in = ResourceUtil.getFile(file_path+"1542338623020961794.html");
+
         String filecode = SnowFlakeUtil.getId() + "";
         String thmlUrl = file_path + "/privateUrl/" + filecode + ".html";
         File file_out = ResourceUtil.getFile(thmlUrl);
@@ -490,11 +489,15 @@ public class ExcelTabController extends BladeController {
         //解析
         Element table = doc.select("table").first();
         Elements trs = table.select("tr");
-        if (aPrivate.getInitTableId() == null) {
-            org.springblade.manager.entity.TableInfo tableInfo = tableInfoService.getOne(new LambdaQueryWrapper<org.springblade.manager.entity.TableInfo>()
-                    .eq(org.springblade.manager.entity.TableInfo::getTabEnName, aPrivate.getInitTableName()));
-            aPrivate.setInitTableId(tableInfo.getId() + "");
-            updateWrapper.set("init_table_id", tableInfo.getId() + "");
+        if(StringUtils.isNotEmpty(excelTab.getTabId())){
+            updateWrapper.set("init_table_id", excelTab.getTabId());
+        }else {
+            if (aPrivate.getInitTableId() == null) {
+                org.springblade.manager.entity.TableInfo tableInfo = tableInfoService.getOne(new LambdaQueryWrapper<org.springblade.manager.entity.TableInfo>()
+                        .eq(org.springblade.manager.entity.TableInfo::getTabEnName, aPrivate.getInitTableName()));
+                aPrivate.setInitTableId(tableInfo.getId() + "");
+                updateWrapper.set("init_table_id", tableInfo.getId() + "");
+            }
         }
 
         List<WbsFormElement> elementList = wbsFormElementService.selectElementListByFid(aPrivate.getInitTableId() + "");

+ 7 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ProjectInfoController.java

@@ -1,5 +1,6 @@
 package org.springblade.manager.controller;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import io.swagger.annotations.*;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
@@ -64,8 +65,11 @@ public class ProjectInfoController extends BladeController {
             @ApiImplicitParam(value = "ReferenceWbsTemplateType", name = "ReferenceWbsTemplateType", required = true)
     })
     public R<ProjectInfoVO2> detail2(ProjectInfo projectInfo) {
-        ProjectInfoVO2 detail = projectInfoService.getOneByCondition(projectInfo.getId(), projectInfo.getReferenceWbsTemplateId(), projectInfo.getReferenceWbsTemplateType());
-        return R.data(detail);
+        if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateId()) && ObjectUtil.isNotEmpty(projectInfo.getId()) && ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateType())) {
+            ProjectInfoVO2 detail = projectInfoService.getOneByCondition(projectInfo.getId(), projectInfo.getReferenceWbsTemplateId(), projectInfo.getReferenceWbsTemplateType());
+            return R.data(detail);
+        }
+        return R.fail(200, "未查询到信息");
     }
 
 
@@ -232,6 +236,7 @@ public class ProjectInfoController extends BladeController {
 
     /**
      * 保存或修改分配项目级wbs树
+     *
      * @return
      */
     @PostMapping("/submit-wbsTree-project")

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/TextdictInfoController.java

@@ -318,7 +318,7 @@ public class TextdictInfoController extends BladeController {
                 element.empty().append(checkbox);
             }
         } else if (textdictInfo.getTextId().equals("date")) { // 日期--年月日时分秒
-            element.empty().append("<el-date-picker @keyDowns='dateKeydown()' v-model=" + vmode + " type='datetime' format='YYYY年MM月DD日 HH:mm:ss' value-format='YYYY年MM月DD日 hh:mm:ss' placeholder=" + placeholder + " keyname=" + keyname + " weighing=" + weighing + "  @contextmenu.prevent.native='contextmenuClick(" + parm + ")'  @mouseup.right='RightClick(" + parm + ")' trIndex=" + trindex + " tdIndex=" + tdindex + "  x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%'   placeholder='" + placeholder + "'> </el-date-picker>");
+            element.empty().append("<el-date-picker @keyDowns='dateKeydown()' v-model=" + vmode + " type='datetime' format='YYYY年MM月DD日 HH:mm:ss' value-format='YYYY年MM月DD日 HH:mm:ss' placeholder=" + placeholder + " keyname=" + keyname + " weighing=" + weighing + "  @contextmenu.prevent.native='contextmenuClick(" + parm + ")'  @mouseup.right='RightClick(" + parm + ")' trIndex=" + trindex + " tdIndex=" + tdindex + "  x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%'   placeholder='" + placeholder + "'> </el-date-picker>");
         } else if (textdictInfo.getTextId().equals("dateYMD")) { // 日期--年月日
             element.empty().append("<el-date-picker @keyDowns='dateKeydown()' v-model=" + vmode + " type='date' format='YYYY年MM月DD日' value-format='YYYY年MM月DD日' placeholder=" + placeholder + " keyname=" + keyname + " weighing=" + weighing + "  @contextmenu.prevent.native='contextmenuClick(" + parm + ")'  @mouseup.right='RightClick(" + parm + ")' trIndex=" + trindex + " tdIndex=" + tdindex + "  x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%'   placeholder='" + placeholder + "'> </el-date-picker>");
         } else if (textdictInfo.getTextId().equals("dateHMS")) { // 日期--时分秒

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ExcelTabMapper.xml

@@ -22,6 +22,7 @@
         <result column="attach_size" property="attachSize"/>
         <result column="tab_type" property="tabType"/>
         <result column="sort" property="sort"/>
+        <result column="tab_id" property="tabId"/>
     </resultMap>
 
     <resultMap id="treeNodeResultMap" type="org.springblade.manager.vo.ExceTabTreVO">

+ 133 - 120
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -298,7 +298,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                         String lastStr = dataInfo2.getString(ziduan[0]) + "_^_" + ziduan[0].split("__")[1];
                         for (int i = 1; i < ziduan.length; i++) {
                             String keyData = dataInfo2.getString(ziduan[i]);
-                            if (StringUtils.isNotEmpty(keyData)&&!keyData.equals("")) {
+                            if (StringUtils.isNotEmpty(keyData) && !keyData.equals("")) {
                                 lastStr += "☆" + dataInfo2.getString(ziduan[i]) + "_^_" + ziduan[i].split("__")[1];
                             }
 
@@ -959,6 +959,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                         transactionManager1.rollback(transactionStatus);
                         log.append(e.getMessage()).append("@@");
                         e.printStackTrace();
+                        return R.fail(wbsTreeContract.getNodeName());
                     }
                 }
 
@@ -1320,7 +1321,6 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 
         //获取清表信息
         ExcelTab excelTab = this.getById(wbsTreeContract.getExcelId());
-
         if (excelTab == null) {
             return R.fail("失败");
         }
@@ -1377,6 +1377,9 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
             }
         }
 
+        if(pkeyId == 1644218999589830668L){
+          //  System.out.println("12321");
+        }
         //数据不为空
         if (StringUtils.isNotEmpty(wbsTreeContract.getHtmlUrl())) {
             InputStream inputStreamByUrl = FileUtils.getInputStreamByUrl(wbsTreeContract.getHtmlUrl());
@@ -1389,115 +1392,122 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 
             if (ObjectUtil.isNotEmpty(DataInfo)) {
                 for (String val : DataInfo.keySet()) {
-                    if (val.indexOf("__") >= 0) {
-                        String[] DataVal = val.split("__");
-                        String[] xy = DataVal[1].split("_");
-                        if (Integer.parseInt(xy[0]) < trs.size()) {
-                            Element ytzData = trs.get(Integer.parseInt(xy[0]));
-                            if (ytzData != null) {
-                                Elements tdsx = ytzData.select("td");
-                                if (Integer.parseInt(xy[1]) < tdsx.size()) {
-                                    Element data=  ytzData.getElementById(val);
-                                    //Element data = ytzData.select("td").get(Integer.parseInt(xy[1]));
-                                    if (data != null) {
-                                        if (data.html().indexOf("x1") >= 0 && data.html().indexOf("y1") >= 0) {
-                                            int x1 = 0;
-                                            int x2 = 0;
-                                            int y1 = 0;
-                                            int y2 = 0;
-
-                                            if (data.html().indexOf("el-tooltip") >= 0) {
-                                                x1 = Integer.parseInt(data.children().get(0).children().get(0).attr("x1"));
-                                                x2 = Integer.parseInt(data.children().get(0).children().get(0).attr("x2"));
-                                                y1 = Integer.parseInt(data.children().get(0).children().get(0).attr("y1"));
-                                            } else {
-                                                x1 = Integer.parseInt(data.children().get(0).attr("x1"));
-                                                y1 = Integer.parseInt(data.children().get(0).attr("y1"));
-                                            }
-                                            if (x1 == 0) {
-                                                x1 = 1;
-                                            }
-                                            String myData = DataInfo.get(val) + "";
-                                            if ((myData.indexOf("T") >= 0 && myData.indexOf("-") >= 0) || (myData.indexOf(",") >= 0 && myData.indexOf("]") >= 0)) {
-                                                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
-                                                sdf.setTimeZone(TimeZone.getTimeZone("GTM+8"));
-                                                SimpleDateFormat formatStr = new SimpleDateFormat("yyyy年MM月dd日");
-                                                if (myData.indexOf(",") >= 0 && myData.indexOf("]") >= 0) {
-
-                                                    myData = myData.replace("[", "").replace("]", "").replaceAll("'", "");
-                                                    String[] dataVal = myData.split(",");
-
-                                                    Date Start_dataStr = sdf.parse(dataVal[0]);
-                                                    Date end_dataStr = sdf.parse(dataVal[1]);
-                                                    String StartDate = formatStr.format(Start_dataStr);
-                                                    String endDate = formatStr.format(end_dataStr);
-                                                    if (StartDate.equals(endDate)) {
-                                                        myData = StartDate;
-                                                    } else {
-                                                        myData = StartDate + "-" + endDate;
-                                                    }
-                                                } else {
-                                                    String[] dataStr = myData.split("T")[0].split("-");
-                                                    if (dataStr.length == 3) {
-                                                        myData = StringUtil.format("{}年{}月{}日", dataStr[0], dataStr[1], Integer.parseInt(dataStr[2]));
-                                                    }
-                                                }
-                                            }
+                    Elements datas = doc.getElementsByAttributeValue("keyname", val);
+                    Element data = null;
+                    if(val.equals("key_12__25_0")){
+                        //System.out.println("1231");
+                    }
+                    if (datas.size() >= 1) {
+                        data = datas.get(0);
+                    }
 
-                                            if (myData.indexOf("lang.String") >= 0) {
-                                                Object obj = DataInfo.get(val);
-                                                if (obj instanceof String[]) {
-                                                    String[] dataDate = (String[]) obj;
-                                                    myData = dataDate[0] + "-" + dataDate[1].trim();
-                                                }
-                                            }
+                    if (data != null) {
+                        if (data.hasAttr("x1") && data.hasAttr("y1")) {
+                            int x1 = 0;
+                            int x2 = 0;
+                            int y1 = 0;
+                            int y2 = 0;
 
-                                            //https:bladex-test-info.oss-cn-chengdu.aliyuncs.com//upload/20220819/b53cb6700db369381e3b03d7737bcdec.jpg__16_1
-                                            if ((myData.indexOf("https") >= 0 || myData.indexOf("http") >= 0) && myData.indexOf("aliyuncs") >= 0) {
-
-                                                InputStream imageIn = CommonUtil.getOSSInputStream(myData);
-                                                byte[] byteNew = IOUtils.toByteArray(imageIn);
-                                                byte[] bytes = CommonUtil.compressImage(byteNew);
-                                                // 这里根据实际需求选择图片类型
-                                                int pictureIdx = workbook.addPicture(bytes, 6);
-                                                CreationHelper helper = workbook.getCreationHelper();
-                                                ClientAnchor anchor = helper.createClientAnchor();
-                                                anchor.setCol1(x1); // param1是列号
-                                                anchor.setCol2(x2);
-                                                anchor.setRow1(y1); // param2是行号
-                                                anchor.setRow2(y2); // param2是行号
-                                                //
-                                                Drawing drawing = sheet.createDrawingPatriarch();
-                                                anchor.setAnchorType(ClientAnchor.AnchorType.MOVE_AND_RESIZE);
-                                                // 插入图片
-                                                Picture pict = drawing.createPicture(anchor, pictureIdx); // 调整图片占单元格百分比的大小,1.0就是100%
-                                                pict.resize(1, 1);
-                                                FileUtils.imageOrientation(sheet, anchor, new DataVO(x1 - 1, y1 - 1));
-
-                                            } else if (myData.equals("1") && data.html().indexOf("hc-form-checkbox-group") >= 0) {
-                                                Row row = sheet.getRow(y1 - 1);
-                                                if (row != null) {
-                                                    Cell cell = row.getCell(x1 - 1);
-                                                    if (cell != null || ObjectUtils.isNotEmpty(cell)) {
-                                                        String exceVal = cell.getStringCellValue().replaceAll(" ", "");
-                                                        short fontIndex = cell.getCellStyle().getFontIndex();
-                                                        Font fontAt = workbook.getFontAt(fontIndex);
-                                                        fontAt.setFontName("EUDC");
-                                                        cell.setCellValue(exceVal.replace("□", "\u2611"));
-                                                    }
-                                                }
-                                            } else {
-                                                Row row = sheet.getRow(y1 - 1);
-                                                if (row != null) {
-                                                    Cell cell = row.getCell(x1 - 1);
-                                                    if (cell != null || ObjectUtils.isNotEmpty(cell)) {
-                                                        cell.setCellValue(myData);
-                                                    }
+                            x1 = Integer.parseInt(data.attr("x1"));
+                            y1 = Integer.parseInt(data.attr("y1"));
+
+                            if (x1 == 0) {
+                                x1 = 1;
+                            }
+
+                            String myData = DataInfo.get(val) + "";
+                            if ((myData.indexOf("T") >= 0 && myData.indexOf("-") >= 0) || (myData.indexOf(",") >= 0 && myData.indexOf("]") >= 0)) {
+                                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
+                                sdf.setTimeZone(TimeZone.getTimeZone("GTM+8"));
+                                SimpleDateFormat formatStr = new SimpleDateFormat("yyyy年MM月dd日");
+                                if (myData.indexOf(",") >= 0 && myData.indexOf("]") >= 0) {
+
+                                    myData = myData.replace("[", "").replace("]", "").replaceAll("'", "");
+                                    String[] dataVal = myData.split(",");
+
+                                    Date Start_dataStr = sdf.parse(dataVal[0]);
+                                    Date end_dataStr = sdf.parse(dataVal[1]);
+                                    String StartDate = formatStr.format(Start_dataStr);
+                                    String endDate = formatStr.format(end_dataStr);
+                                    if (StartDate.equals(endDate)) {
+                                        myData = StartDate;
+                                    } else {
+                                        myData = StartDate + "-" + endDate;
+                                    }
+                                } else {
+                                    String[] dataStr = myData.split("T")[0].split("-");
+                                    if (dataStr.length == 3) {
+                                        myData = StringUtil.format("{}年{}月{}日", dataStr[0], dataStr[1], Integer.parseInt(dataStr[2]));
+                                    }
+                                }
+                            }
+
+                            if (myData.indexOf("lang.String") >= 0) {
+                                Object obj = DataInfo.get(val);
+                                if (obj instanceof String[]) {
+                                    String[] dataDate = (String[]) obj;
+                                    myData = dataDate[0] + "-" + dataDate[1].trim();
+                                }
+                            }
+
+                            //https:bladex-test-info.oss-cn-chengdu.aliyuncs.com//upload/20220819/b53cb6700db369381e3b03d7737bcdec.jpg__16_1
+                            if ((myData.indexOf("https") >= 0 || myData.indexOf("http") >= 0) && myData.indexOf("aliyuncs") >= 0) {
+
+                                InputStream imageIn = CommonUtil.getOSSInputStream(myData);
+                                byte[] byteNew = IOUtils.toByteArray(imageIn);
+                                byte[] bytes = CommonUtil.compressImage(byteNew);
+                                // 这里根据实际需求选择图片类型
+                                int pictureIdx = workbook.addPicture(bytes, 6);
+                                CreationHelper helper = workbook.getCreationHelper();
+                                ClientAnchor anchor = helper.createClientAnchor();
+                                anchor.setCol1(x1); // param1是列号
+                                anchor.setCol2(x2);
+                                anchor.setRow1(y1); // param2是行号
+                                anchor.setRow2(y2); // param2是行号
+                                //
+                                Drawing drawing = sheet.createDrawingPatriarch();
+                                anchor.setAnchorType(ClientAnchor.AnchorType.MOVE_AND_RESIZE);
+                                // 插入图片
+                                Picture pict = drawing.createPicture(anchor, pictureIdx); // 调整图片占单元格百分比的大小,1.0就是100%
+                                pict.resize(1, 1);
+                                FileUtils.imageOrientation(sheet, anchor, new DataVO(x1 - 1, y1 - 1));
+
+                            } else if (data.tagName().equals("hc-form-checkbox-group")) {
+                                Row row = sheet.getRow(y1 - 1);
+                                if (row != null) {
+                                    Cell cell = row.getCell(x1 - 1);
+                                    if (cell != null || ObjectUtils.isNotEmpty(cell)) {
+                                        String exceVal = cell.getStringCellValue().replaceAll(" ", "");
+                                        //如果有□ 代表 自动生成  如果没有 代表后期添加 需要显示html 中的值
+                                        if(exceVal.indexOf("□")>=0 ){
+                                            if(myData.equals("1")){
+                                                short fontIndex = cell.getCellStyle().getFontIndex();
+                                                Font fontAt = workbook.getFontAt(fontIndex);
+                                                fontAt.setFontName("EUDC");
+                                                cell.setCellValue(exceVal.replace("□", "\u2611"));
+                                            }
+                                        }else{
+                                            String dataJson = data.attr(":objs");
+                                            if(StringUtils.isNotEmpty(dataJson)){
+                                                JSONArray jsonArray = JSONArray.parseArray(dataJson);
+                                                List<Integer> idList = Func.toIntList(myData);
+                                                String dataInfo = jsonArray.getJSONObject(0).getString("name");
+                                                for(int inx=1 ; inx<idList.size() ; inx++){
+                                                    dataInfo = dataInfo+","+jsonArray.getJSONObject(inx).getString("name");
                                                 }
+                                                cell.setCellValue(dataInfo);
                                             }
                                         }
                                     }
                                 }
+                            } else {
+                                Row row = sheet.getRow(y1 - 1);
+                                if (row != null) {
+                                    Cell cell = row.getCell(x1 - 1);
+                                    if (cell != null || ObjectUtils.isNotEmpty(cell)) {
+                                        cell.setCellValue(myData);
+                                    }
+                                }
                             }
                         }
                     }
@@ -1521,6 +1531,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                             Elements tdsx = ytzData.select("td");
                             if (Integer.parseInt(trtd[1]) < tdsx.size()) {
                                 Element data = ytzData.select("td").get(Integer.parseInt(trtd[1]));
+
                                 if (data.html().indexOf("el-tooltip") >= 0) {
                                     data = data.children().get(0);
                                 }
@@ -1561,6 +1572,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         FileOutputStream outputStream = new FileOutputStream(excelPath);
         workbook.write(outputStream);
         FileUtils.setExcelScaleToPdf(excelPath, pdfPath);
+
         BladeFile bladeFile = newIOSSClient.uploadFile(pkeyId + ".pdf", pdfPath);
 
         //附件
@@ -1607,8 +1619,8 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         if (exceInp != null) {
             IoUtil.closeQuietly(exceInp);
         }
+         return R.data(bladeFile2.getLink());
 
-        return R.data(bladeFile2.getLink());
     }
 
     @Override
@@ -1979,38 +1991,39 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         reData.remove("contractId");
         reData.remove("pkeyId");
         reData.remove("projectId");
-        chart(reData,wbsTreePrivate);
+        chart(reData, wbsTreePrivate);
         list.add(reData);
         return list;
     }
-    private void  chart(Map<String,Object> reData,WbsTreePrivate wtp){
+
+    private void chart(Map<String, Object> reData, WbsTreePrivate wtp) {
         try {
-            if(reData.size()>0&&wtp!=null) {
+            if (reData.size() > 0 && wtp != null) {
                 List<Map<String, Object>> configList = this.jdbcTemplate.queryForList("select d.rely ,b.e_key ekey from m_wbs_tree_private a join  m_wbs_form_element b on a.init_table_id=b.f_id join m_element_formula_mapping c on b.id=c.element_id join m_formula d on c.formula_id=d.id  where p_key_id=" + wtp.getPKeyId() + " and b.is_deleted=0 and d.formula like 'FC.chart%' limit 1");
                 if (Func.isNotEmpty(configList)) {
                     Map<String, Object> config = configList.get(0);
                     String[] rely = Func.toStr(config.get("rely")).split(",");
                     String ky = rely[0].split(":")[1];
                     String kx = rely[1].split(":")[1];
-                    Map<String,String> coordsMap = FormulaUtils.getElementCell(wtp.getHtmlUrl());
-                    List<String> ly= Arrays.stream((coordsMap.get(ky)).split(";")).filter(Func::isNotBlank).map(k->ky+"__"+k).collect(Collectors.toList());
-                    List<String> lx= Arrays.stream((coordsMap.get(kx)).split(";")).filter(Func::isNotBlank).map(k->kx+"__"+k).collect(Collectors.toList());
-                    List<String> fct= new ArrayList<>();
-                    if(ly.size()>0){
+                    Map<String, String> coordsMap = FormulaUtils.getElementCell(wtp.getHtmlUrl());
+                    List<String> ly = Arrays.stream((coordsMap.get(ky)).split(";")).filter(Func::isNotBlank).map(k -> ky + "__" + k).collect(Collectors.toList());
+                    List<String> lx = Arrays.stream((coordsMap.get(kx)).split(";")).filter(Func::isNotBlank).map(k -> kx + "__" + k).collect(Collectors.toList());
+                    List<String> fct = new ArrayList<>();
+                    if (ly.size() > 0) {
                         fct.addAll(ly);
                     }
-                    if(lx.size()>0){
+                    if (lx.size() > 0) {
                         fct.addAll(lx);
                     }
-                    String formChartKey= String.join(",", fct);
-                    if(Func.isNotEmpty(formChartKey)){
-                        reData.put("formChartKey",formChartKey);
-                        String key=Func.toStr(config.get("ekey"));
-                        reData.put("formchartKeyShow",key+"__"+coordsMap.get(key).split(";")[0]);
+                    String formChartKey = String.join(",", fct);
+                    if (Func.isNotEmpty(formChartKey)) {
+                        reData.put("formChartKey", formChartKey);
+                        String key = Func.toStr(config.get("ekey"));
+                        reData.put("formchartKeyShow", key + "__" + coordsMap.get(key).split(";")[0]);
                     }
                 }
             }
-        }catch (Exception e){
+        } catch (Exception e) {
             e.printStackTrace();
         }
     }

+ 9 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsFormElementServiceImpl.java

@@ -21,6 +21,7 @@ import org.springblade.manager.mapper.TableInfoMapper;
 import org.springblade.manager.mapper.WbsFormElementMapper;
 import org.springblade.manager.mapper.WbsTreeMapper;
 import org.springblade.manager.mapper.WbsTreePrivateMapper;
+import org.springblade.manager.service.IExcelTabService;
 import org.springblade.manager.service.ITableInfoService;
 import org.springblade.manager.service.IWbsFormElementService;
 import org.springblade.manager.utils.WbsElementUtil;
@@ -51,6 +52,8 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
 
     private final ITableInfoService tableInfoService;
 
+    private final IExcelTabService excelTabService;
+
     //元素字符串、数值、时间类型默认长度
     public static final Integer DEFAULT_ELEMENT_LENGTH_VARCHAR = 250;
     public static final Integer DEFAULT_ELEMENT_LENGTH_NUMBER = 50;
@@ -754,6 +757,12 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
                         if (formElementDTO.getSubmitStatus() == 2) {
                             baseMapper.insertWbsTabRelationExcelTab(SnowFlakeUtil.getId(), formElementDTO.getExcelTabId(), formElementDTO.getId());
                         }
+
+                        // 绑定excel 与实体表的关系
+                        excelTabService.update(Wrappers.<ExcelTab>lambdaUpdate()
+                                .set(ExcelTab::getTabId, formElementDTO.getInitTableId())
+                                .eq(ExcelTab::getId, formElementDTO.getExcelTabId())
+                        );
                     }
                 } catch (Exception e) {
                     //删除元素表

+ 11 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -312,7 +312,15 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 
     @Override
     public Long findWbsTreePrivate(String ids) {
-        return baseMapper.selectCount(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getProjectId, ids));
+        List<WbsTreePrivate> wbsTreePrivates = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().select(WbsTreePrivate::getParentId).eq(WbsTreePrivate::getProjectId, ids));
+        boolean allParentIdAreMinus10 = wbsTreePrivates.stream().allMatch(f -> f.getParentId() == -10L);
+        if (allParentIdAreMinus10) {
+            //如果都是元素库引用的表,那么直接全部删除
+            jdbcTemplate.execute("delete from m_wbs_tree_private where project_id = " + ids);
+            return 0L;
+        } else {
+            return 1L;
+        }
     }
 
     @Override
@@ -969,7 +977,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                         insertList.forEach(i -> i.setId(SnowFlakeUtil.getId()));
                         this.wbsParamServiceImpl.saveOrUpdateBatch(insertList, 1000);
                         /*生成公式,并自动绑定元素,同key复用一个公式*/
-                        Map<String, Long> formulaIdeyMap =this.wbsParamServiceImpl.formulaIdKeyMap(insertList.stream().map(WbsParam::getK).collect(Collectors.toList()));
+                        Map<String, Long> formulaIdeyMap = this.wbsParamServiceImpl.formulaIdKeyMap(insertList.stream().map(WbsParam::getK).collect(Collectors.toList()));
                       /*  Map<Long, Formula> insertFormulaMap = insertList.stream().map(e -> {
                             Map<String, Object> tmpMap = new HashMap<>();
                             Formula formula = new Formula();
@@ -1002,7 +1010,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                         List<ElementFormulaMapping> insertEfm = new ArrayList<>();
                         insertList.forEach(p -> {
                             List<Map<String, Object>> elementMap = groupElementNode.get(p.getNodeId().toString());
-                           // Formula formula = insertFormulaMap.get(p.getId());
+                            // Formula formula = insertFormulaMap.get(p.getId());
                             if (Func.isNotEmpty(elementMap)) {
                                 elementMap.forEach(m -> {
                                     if (com.mixsmart.utils.StringUtils.handleNull(m.get("name")).contains(p.getName())) {