Browse Source

修改pdf问题

Administrator 2 years ago
parent
commit
8a9c01c462

+ 35 - 0
.idea/jarRepositories.xml

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RemoteRepositoriesConfiguration">
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Central Repository" />
+      <option name="url" value="https://repo.maven.apache.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="aliyun-repos" />
+      <option name="name" value="aliyun-repos" />
+      <option name="url" value="https://maven.aliyun.com/repository/public/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Maven Central repository" />
+      <option name="url" value="https://repo1.maven.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="jboss.community" />
+      <option name="name" value="JBoss Community repository" />
+      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="blade-release" />
+      <option name="name" value="Release Repository" />
+      <option name="url" value="http://nexus.bladex.vip/repository/maven-releases/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="com.e-iceblue" />
+      <option name="name" value="e-iceblue" />
+      <option name="url" value="https://repo.e-iceblue.cn/repository/maven-public/" />
+    </remote-repository>
+  </component>
+</project>

+ 2 - 0
blade-common/src/main/java/org/springblade/common/constant/CommonConstant.java

@@ -58,6 +58,8 @@ public interface CommonConstant {
 	 */
 	String DEFAULT_PARAM_PASSWORD = "account.initPassword";
 
+	String SYS_LOCAL_URL = "sys.local.url";
+
 	/**
 	 * 默认排序字段
 	 */

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

@@ -79,6 +79,12 @@ import lombok.EqualsAndHashCode;
 	 * 签字人角色
 	 */
 	private String sigRoleId;
+	/**
+	 * 元素名
+	 */
+	private String signName;
+
+	private String wzName;
 
 	/**
 	 * 是否删除

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -1463,7 +1463,7 @@ public class InformationWriteQueryController extends BladeController {
 				vo.setIsFirst(first != null);
 			});
 		}
-
+		rootTreeNode = rootTreeNode.stream().filter(vo->vo.getDeptCategory()!=111).collect(Collectors.toList());
 		return R.data(rootTreeNode);
 	}
 

+ 176 - 46
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -7,11 +7,6 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import com.itextpdf.html2pdf.ConverterProperties;
-import com.itextpdf.html2pdf.resolver.font.DefaultFontProvider;
-import com.itextpdf.io.font.FontProgram;
-import com.itextpdf.io.font.FontProgramFactory;
-import com.itextpdf.layout.font.FontProvider;
 import com.spire.xls.ExcelPicture;
 import com.spire.xls.ExcelVersion;
 import com.spire.xls.Workbook;
@@ -26,6 +21,7 @@ import org.jsoup.nodes.Element;
 import org.jsoup.select.Elements;
 import org.springblade.business.feign.FileUtilsClient;
 import org.springblade.business.feign.InformationQueryClient;
+import org.springblade.common.constant.CommonConstant;
 import org.springblade.common.utils.CommonUtil;
 import org.springblade.common.utils.MathUtil;
 import org.springblade.common.utils.SnowFlakeUtil;
@@ -37,7 +33,6 @@ import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.constant.BladeConstant;
 import org.springblade.core.tool.utils.*;
-import org.springblade.manager.bean.TableInfo;
 import org.springblade.manager.entity.*;
 import org.springblade.manager.mapper.WbsTreePrivateMapper;
 import org.springblade.manager.service.*;
@@ -48,6 +43,7 @@ import org.springblade.resource.feign.CommonFileClient;
 import org.springblade.resource.feign.IOSSClient;
 import org.springblade.resource.feign.NewIOSSClient;
 import org.springblade.resource.vo.NewBladeFile;
+import org.springblade.system.cache.ParamCache;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.web.bind.annotation.*;
 import org.springblade.core.mp.support.Query;
@@ -66,6 +62,8 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
+import static org.springblade.common.constant.CommonConstant.DEFAULT_PARAM_PASSWORD;
+
 /**
  * 清表基础数据表 控制器
  *
@@ -259,12 +257,14 @@ public class ExcelTabController extends BladeController {
     })
     public R putFileAttach(@RequestParam("file") MultipartFile file, Long nodeId) {
 
+        String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
+
         ExcelTab detail = excelTabService.getById(nodeId);
         // 上传excel文件
         R<BladeFile> bladeFile = iossClient.addFileInfo(file);
         BladeFile bladeFile1 = bladeFile.getData();
         String filecode = SnowFlakeUtil.getId()+"";
-        String thmlUrl = "/Users/hongchuangyanfa/Desktop/"+filecode+".html";
+        String thmlUrl = file_path+filecode+".html";
         // 解析excel
         Workbook wb = new Workbook();
         wb.loadFromMHtml(file.getInputStream());
@@ -272,7 +272,6 @@ public class ExcelTabController extends BladeController {
         Worksheet sheet = wb.getWorksheets().get(0);
         sheet.saveToHtml(thmlUrl);
 
-
         detail.setExtension(bladeFile1.getOriginalName());
         detail.setFileUrl(bladeFile1.getLink());
         detail.setFileType(3); // 表示为清表信息  1 表示祖节点  2 表示为节点信息 3 表示清表
@@ -411,6 +410,7 @@ public class ExcelTabController extends BladeController {
             @ApiImplicitParam(name = "tabId", value = "表Id", required = true)
     })
     public R<List<ExceTabTreVO>> saveLinkeTab(Long exceTabId, Long tabId, BladeUser bladeUser) throws IOException {
+        String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
         // 查询私有项目信息
         WbsTreePrivate wbsTree = new WbsTreePrivate();
         wbsTree.setPKeyId(tabId);
@@ -427,7 +427,7 @@ public class ExcelTabController extends BladeController {
         // 复制模版htmlURL
         File file_in= ResourceUtil.getFile(excelTab.getHtmlUrl());
         String filecode = SnowFlakeUtil.getId()+"";
-        String thmlUrl = "/Users/hongchuangyanfa/Desktop/privateUrl/"+filecode+".html";
+        String thmlUrl = file_path+"/privateUrl/"+filecode+".html";
         File file_out = ResourceUtil.getFile(thmlUrl);
         FileUtil.copy(file_in,file_out);
         updateWrapper.set("html_url",thmlUrl);
@@ -612,7 +612,7 @@ public class ExcelTabController extends BladeController {
     /**
      *保存用户填报数据接口
      */
-    @PostMapping("/save_buss_data_bak")
+    @PostMapping("/save_buss_data")
     @ApiOperationSupport(order = 13)
     @ApiOperation(value = "填报页面数据保存", notes = "填报页面数据保存")
     public R<String> saveBussData(@Valid @RequestBody JSONObject dataInfo, BladeUser bladeUser) throws IOException {
@@ -1175,6 +1175,7 @@ public class ExcelTabController extends BladeController {
         if(wbsTreeContract.getHtmlUrl()==null){
             return R.data(reData);
         }
+
         //表单是否存储在
         String tabName = wbsTreeContract.getInitTableName();
         String isExitSql = " select * from information_schema.TABLES where TABLE_NAME='"+tabName+"'";
@@ -1243,6 +1244,8 @@ public class ExcelTabController extends BladeController {
     })
     public R getBussPdfInfo(Long pkeyId) throws Exception {
 
+        String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
+
         WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
                 .eq(WbsTreeContract::getPKeyId, pkeyId));
 
@@ -1253,7 +1256,7 @@ public class ExcelTabController extends BladeController {
             return R.fail("请关联清表!");
         }
 
-        String pdfPath="/Users/hongchuangyanfa/Desktop/pdf//"+pkeyId+".pdf";
+        String pdfPath=file_path+"/pdf//"+pkeyId+".pdf";
         File tabpdf = ResourceUtil.getFile(pdfPath);
         if(tabpdf.exists()){
             tabpdf.delete();
@@ -1271,11 +1274,13 @@ public class ExcelTabController extends BladeController {
         Worksheet sheet = wb.getWorksheets().get(0);
 
         if (DataInfo != null && DataInfo.size() >= 1) {
+
             File htmlFile = ResourceUtil.getFile(wbsTreeContract.getHtmlUrl());
             String htmlString =  IoUtil.readToString(new FileInputStream(htmlFile));
             Document doc = Jsoup.parse(htmlString);
             Element table = doc.select("table").first();
             Elements trs = table.select("tr");
+
             for(String val : DataInfo.keySet()){
                 if(val.indexOf("__")>=0){
                     String DataVal[] = val.split("__");
@@ -1310,11 +1315,18 @@ public class ExcelTabController extends BladeController {
                         }
                         https://bladex-test-info.oss-cn-chengdu.aliyuncs.com//upload/20220819/b53cb6700db369381e3b03d7737bcdec.jpg__16_1
                         if(myData.indexOf("https")>=0 && myData.indexOf("aliyuncs")>=0){
-                            System.out.println(myData);
+                            Element element = trs.get(y1).select("td").get(x1);
+                            String styles[] = element.attr("style").split(";");
+                            int Height = 0;
+                            for(String sty:styles){
+                                if(sty.indexOf("height:")>=0){
+                                    Height = Integer.parseInt(sty.replace("height:","").replace("px",""));
+                                }
+                            }
 
                             BufferedImage image = ImageIO.read(CommonUtil.getOSSInputStream(myData) );
                             ExcelPicture pic = sheet.getPictures().add(y1, x1,image);
-
+                            pic.setHeight(Height);
                             sheet.getCellRange(y1,x1).getStyle().setShrinkToFit(true);
 
                         }else{
@@ -1353,8 +1365,12 @@ public class ExcelTabController extends BladeController {
 
         List<String> dataListPdf = tableFileList.stream().filter(tableFile -> tableFile.getDomainPdfUrl()!=null).map(TableFile::getDomainPdfUrl).collect(Collectors.toList());
 
-        String pdfPath2 = "/Users/hongchuangyanfa/Desktop/pdf//"+pkeyId+"_2.pdf";
+        String pdfPath2 = file_path+"/pdf//"+pkeyId+"_2.pdf";
 
+        File tabpdf2 = ResourceUtil.getFile(pdfPath2);
+        if(tabpdf2.exists()){
+            tabpdf2.delete();
+        }
         FileUtils.mergePdfPublicMethods(dataListPdf,pdfPath2);
 
         BladeFile bladeFile2 = newIOSSClient.uploadFile(pkeyId + "2.pdf", pdfPath2);
@@ -1377,7 +1393,10 @@ public class ExcelTabController extends BladeController {
     public R copeBussTab(Long pkeyId) throws FileNotFoundException {
         WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
                 .eq(WbsTreeContract::getPKeyId, pkeyId));
-        List<WbsTreeContract> wbsTreeContractList = wbsTreeContractService.getBaseMapper().selectList(Wrappers.<WbsTreeContract>query().lambda().eq(WbsTreeContract::getId,wbsTreeContract.getId()).eq(WbsTreeContract::getContractId,wbsTreeContract.getContractId()));
+        List<WbsTreeContract> wbsTreeContractList = wbsTreeContractService.getBaseMapper().selectList(Wrappers.<WbsTreeContract>query().lambda()
+                .eq(WbsTreeContract::getId,wbsTreeContract.getId())
+                .eq(WbsTreeContract::getContractId,wbsTreeContract.getContractId())
+                .eq(WbsTreeContract::getParentId,wbsTreeContract.getParentId()));
 
         long newPkId = SnowFlakeUtil.getId();
         Long  id = wbsTreeContract.getId();
@@ -1447,6 +1466,8 @@ public class ExcelTabController extends BladeController {
     })
     public R addBussFile(@RequestParam("file") MultipartFile file, Long pkeyId) {
 
+        String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
+
         R<BladeFile> bladeFile = iossClient.addFileInfo(file);
         BladeFile bladeFile1 = bladeFile.getData();
         TableFile tableFile = new TableFile();
@@ -1490,7 +1511,11 @@ public class ExcelTabController extends BladeController {
         //
         List<String> dataListPdf = tableFileList.stream().filter(tableFile1 -> tableFile1.getDomainPdfUrl()!=null).map(TableFile::getDomainPdfUrl).collect(Collectors.toList());
 
-        String pdfPath2 = "/Users/hongchuangyanfa/Desktop/pdf//"+pkeyId+"_2.pdf";
+        String pdfPath2 = file_path+"/pdf//"+pkeyId+"_2.pdf";
+        File tabpdf2 = ResourceUtil.getFile(pdfPath2);
+        if(tabpdf2.exists()){
+            tabpdf2.delete();
+        }
 
         FileUtils.mergePdfPublicMethods(dataListPdf,pdfPath2);
 
@@ -1532,13 +1557,17 @@ public class ExcelTabController extends BladeController {
             @ApiImplicitParam(name = "projectId", value = "项目ID", required = true),
             @ApiImplicitParam(name = "contractId", value = "合同段Id", required = true)
     })
-    public R getBussPdfs(String nodeId,String classify,String contractId,String projectId){
-
+    public R getBussPdfs(String nodeId,String classify,String contractId,String projectId) throws FileNotFoundException {
+        String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
         // 获取有权限的节点信息
         List<WbsTreeContract> wbsTreeContractList = wbsTreeContractService.searchNodeAllTable(nodeId, classify, contractId, projectId);
         List<String> data = wbsTreeContractList.stream().filter(wbsTreeContract ->  wbsTreeContract.getPdfUrl()!=null && !wbsTreeContract.getIsBussShow().equals("2")).map(WbsTreeContract::getPdfUrl).collect(Collectors.toList());
 
-        String listPdf = "/Users/hongchuangyanfa/Desktop/pdf/"+nodeId+".pdf";
+        String listPdf = file_path+"pdf/"+nodeId+".pdf";
+        File tabpdf2 = ResourceUtil.getFile(listPdf);
+        if(tabpdf2.exists()){
+            tabpdf2.delete();
+        }
 
         FileUtils.mergePdfPublicMethods(data,listPdf);
 
@@ -1565,33 +1594,11 @@ public class ExcelTabController extends BladeController {
     }
 
 
-    /**
-     * 设置BaseFont
-     * @param fontPath  字体路径
-     * @return
-     */
-    private static ConverterProperties creatBaseFont(String fontPath) {
-        ConverterProperties properties = new ConverterProperties();
-        FontProvider fontProvider = new DefaultFontProvider();
-        FontProgram fontProgram;
-        try {
-            fontProgram = FontProgramFactory.createFont(fontPath);
-            fontProvider.addFont(fontProgram);
-            properties.setFontProvider(fontProvider);
-        } catch (IOException e) {
-            //  log.error("creat base font erro" , e );
-            System.out.println("creat base font erro");
-        }
-        return properties;
-    }
-
-
-
-
-    @PostMapping("/save_buss_data")
+    @PostMapping("/save_buss_data_bak")
     @ApiOperationSupport(order = 13)
     @ApiOperation(value = "填报页面数据保存", notes = "填报页面数据保存")
     public R<String> _saveBussData(@Valid @RequestBody JSONObject dataInfo, BladeUser bladeUser) throws IOException {
+
         JSONArray dataArray = new JSONArray();
         if(dataInfo.containsKey("dataInfo")){ // 节点保存
             JSONObject jsonObject = dataInfo.getJSONObject("dataInfo");
@@ -1599,9 +1606,132 @@ public class ExcelTabController extends BladeController {
         }else{ // 单个保存
             dataArray.add(dataInfo);
         }
-        List<TableInfo> tableInfoList =this.excelTabService.getTableInfoList(dataArray);
-        this.excelTabService.formulaFillData(tableInfoList);
-        this.excelTabService.saveOrUpdateInfo(tableInfoList);
+
+        for(int m=0;m<dataArray.size();m++){
+            JSONObject dataInfo2= dataArray.getJSONObject(m);
+            //
+            String contractId = dataInfo2.getString("contractId");
+            String pkeyId = dataInfo2.getString("pkeyId");
+            String projectId = dataInfo2.getString("projectId");
+            //huangjn 填报的类型,施工或监理
+            String classify = dataInfo2.getString("classify");
+
+            //huangjn 填报的类型,施工或监理
+            // 去掉
+            dataInfo2.remove("contractId");
+            dataInfo2.remove("pkeyId");
+            dataInfo2.remove("p_key_id");
+            dataInfo2.remove("projectId");
+            dataInfo2.remove("classify");
+            dataInfo2.remove("pickerKey");
+            dataInfo2.remove("id");
+            dataInfo2.remove("");
+            // 计算数据
+            Map<String,String> dataMap = new HashMap<>();
+            for(String k:dataInfo2.keySet()){
+                if(k.indexOf("__")>=0){
+                    String key = k.split("__")[0];
+                    if(dataMap.containsKey(key)){
+                        dataMap.put(key,dataMap.get(key)+","+k);
+                    }else{
+                        dataMap.put(key,k);
+                    }
+                }
+            }
+
+            Map<String,String> dataMap2 = new HashMap<>();
+
+
+            // 字段组合
+            for(String k:dataMap.keySet()){
+                if(dataMap.get(k).indexOf(",")>=0 && dataMap.get(k).indexOf("000Z")<0){
+                    String [] ziduan= dataMap.get(k).split(",");
+                    String temp = "";
+                    for(int i = 0; i < ziduan.length - 1; i++) {
+                        for (int j = 0; j < ziduan.length - i - 1; j++) {
+                            Integer tr = Integer.parseInt((ziduan[j].split("__")[1]).split("_")[0]);
+                            Integer td = Integer.parseInt(ziduan[j].split("__")[1].split("_")[1]);
+
+                            Integer tr_1 = Integer.parseInt(ziduan[j + 1].split("__")[1].split("_")[0]);
+                            Integer td_1 = Integer.parseInt(ziduan[j + 1].split("__")[1].split("_")[1]);
+
+                            if (tr > tr_1 && td==td_1  ) { //纵向排序
+                                temp = ziduan[j];
+                                ziduan[j] = ziduan[j + 1];
+                                ziduan[j + 1] = temp;
+                            }
+                        }
+                    }
+
+                    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(!keyData.equals("")){
+                            lastStr+=","+dataInfo2.getString(ziduan[i])+"__"+ziduan[i].split("__")[1];
+                        }
+
+                    }
+                    dataMap2.put(k,lastStr);
+                }else{
+                    String dataVal = dataInfo2.getString(dataMap.get(k));
+                    if(!dataVal.equals("") || !dataVal.equals("[]") ) {
+                        System.out.println(k+"__"+dataMap.get(k));
+                        dataMap2.put(k, dataVal+"__"+dataMap.get(k).split("__")[1]);
+                    }
+                }
+            }
+
+            dataMap2.put("p_key_id",pkeyId);
+
+            WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
+                    .eq(WbsTreeContract::getPKeyId, pkeyId));
+            if(wbsTreeContract == null){
+                continue;
+            }
+
+            String tabName = wbsTreeContract.getInitTableName();
+
+            // 判读修改还是 添加
+            String querySql = "select * from "+tabName+" where p_key_id="+pkeyId ;
+            List<Map<String, Object>> dataIn = jdbcTemplate.queryForList(querySql);
+
+            String sqlInfo="";
+
+            if(dataIn.isEmpty()){ //插入
+                sqlInfo = "INSERT INTO "+tabName+" ( ";
+                String keyStr = "id,";
+                String valStr = SnowFlakeUtil.getId() + ",";
+                for (String keys : dataMap2.keySet()){
+                    keyStr += keys+",";
+                    valStr += "'"+dataMap2.get(keys)+"',";
+                }
+                keyStr=keyStr.substring(0,keyStr.lastIndexOf(","));
+                valStr=valStr.substring(0,valStr.lastIndexOf(","));
+                sqlInfo = sqlInfo + keyStr+") VALUES (" +valStr +")";
+
+
+                WbsTreeContract wbsTreeContractByP = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
+                        .eq(WbsTreeContract::getId, wbsTreeContract.getParentId()).eq(WbsTreeContract::getContractId,contractId));
+
+                //huangjn 保存成功后调用生成资料查询列表数据
+                this.informationQueryClient.saveOrUpdateInformationQueryData(wbsTreeContractByP.getPKeyId()+"", "文件名称(后面再完善)", Integer.parseInt(classify), 2);
+            }else{ //更新
+                sqlInfo = "update  "+tabName+" set ";
+                for (String keys : dataMap2.keySet()){
+                    sqlInfo += keys+"='"+dataMap2.get(keys)+"',";
+                }
+                sqlInfo=sqlInfo.substring(0,sqlInfo.lastIndexOf(","));
+                sqlInfo = sqlInfo + " where p_key_id="+pkeyId;
+            }
+
+            UpdateWrapper<WbsTreeContract> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.in("p_key_id",pkeyId);
+            updateWrapper.set("is_tab_pdf",2);
+            wbsTreeContractService.update(updateWrapper);
+
+            jdbcTemplate.execute(sqlInfo);
+            // this.getBussPdfInfo(Long.parseLong(pkeyId));
+        }
         return  R.success("1");
     }
 

+ 5 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/FirstController.java

@@ -77,12 +77,12 @@ public class FirstController extends BladeController {
     @ApiOperationSupport(order = 1)
     @ApiOperation(value = "首件表单获取html页面", notes = "首件表单获取html页面")
     @ApiImplicitParams(value = {
-            @ApiImplicitParam(name = "projectId", value = "projectId", required = true)
+            @ApiImplicitParam(name = "contractId", value = "contractId", required = true)
     })
-    public R getFirstExcelHtml(Long projectId) throws IOException, InterruptedException {
+    public R getFirstExcelHtml(Long contractId) throws IOException, InterruptedException {
 
         WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
-                .eq(WbsTreeContract::getProjectId,projectId).eq(WbsTreeContract::getTableType,"111"));
+                .eq(WbsTreeContract::getContractId,contractId).eq(WbsTreeContract::getTableType,"111"));
         if(wbsTreeContract ==null ){
             return R.fail("该数据下无此节点!");
         }
@@ -100,8 +100,8 @@ public class FirstController extends BladeController {
         fileInputStream.close();
         JSONObject reData = new JSONObject();
         reData.put("id",wbsTreeContract.getPKeyId());
-        reData.put("data",table);
-        return R.data(table+"");
+        reData.put("data",table+"");
+        return R.data(reData);
     }
 
     /**

+ 8 - 28
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/LinkdataInfoController.java

@@ -16,54 +16,34 @@
  */
 package org.springblade.manager.controller;
 
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.itextpdf.html2pdf.ConverterProperties;
-import com.itextpdf.html2pdf.HtmlConverter;
-import com.itextpdf.html2pdf.resolver.font.DefaultFontProvider;
-import com.itextpdf.io.font.FontProgram;
-import com.itextpdf.io.font.FontProgramFactory;
-import com.itextpdf.kernel.geom.PageSize;
-import com.itextpdf.kernel.pdf.PdfDocument;
-import com.itextpdf.kernel.pdf.PdfWriter;
-import com.itextpdf.layout.font.FontProvider;
-import com.spire.pdf.PdfPageSettings;
-import com.spire.pdf.graphics.PdfMargins;
-import com.spire.xls.Workbook;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
-import javax.validation.Valid;
-import com.spire.pdf.htmlconverter.qt.Size;
-
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
 import org.jsoup.select.Elements;
+import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.FileUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.IoUtil;
 import org.springblade.core.tool.utils.ResourceUtil;
+import org.springblade.manager.entity.LinkdataInfo;
 import org.springblade.manager.entity.WbsFormElement;
-import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.mapper.WbsTreePrivateMapper;
+import org.springblade.manager.service.ILinkdataInfoService;
 import org.springblade.manager.service.IWbsFormElementService;
-import org.springblade.manager.service.IWbsTreeContractService;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.bind.annotation.RequestParam;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.manager.entity.LinkdataInfo;
-import org.springblade.manager.vo.LinkdataInfoVO;
-import org.springblade.manager.service.ILinkdataInfoService;
-import org.springblade.core.boot.ctrl.BladeController;
 
-import java.io.*;
-import java.util.Map;
+import javax.validation.Valid;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
 
 /**
  * 清表解析字段信息 控制器

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

@@ -150,7 +150,7 @@ public class TextdictInfoController extends BladeController {
 	@PostMapping("/saveTextInfo")
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "新增或修改", notes = "传入textdictInfo")
-	public R saveTextInfo(@Valid @RequestBody TextdictDataInfoVO textdictInfo) throws FileNotFoundException {
+	public R saveTextInfo(@Valid @RequestBody TextdictDataInfoVO textdictInfo) throws FileNotFoundException, InterruptedException {
 
 		// 获取 节点信息
 		WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.getByPKeyId(textdictInfo.getTableId());
@@ -189,7 +189,7 @@ public class TextdictInfoController extends BladeController {
 			element.empty().append("<el-input :rows="+rowspan*2+"  type='textarea' placeholder="+placeholder+" v-model="+vmode+"    keyname="+keyname+" weighing="+weighing+"  @contextmenu.prevent.native='RightClick("+parm+")' trIndex="+trindex+" tdIndex="+tdindex+"  x1="+x1+" x2="+x2+" y1="+y1+" y2="+y2+" style='width:100%;height:100%'  > </el-input>");
 			element.children().get(0).attr("@focus","getInformation("+oncklickText+")");
 		}else if(textdictInfo.getTextId().equals("select")){ // 下拉框
-			String selectText = " <el-select v-model="+vmode+" placeholder='请选择' trIndex="+trindex+" tdIndex="+tdindex+"  x1="+x1+" x2="+x2+" y1="+y1+" y2="+y2+">"; //v-model="+keyname+"
+			String selectText = " <el-select v-model="+vmode+" keyname="+keyname+" weighing="+weighing+" placeholder="+placeholder+" trIndex="+trindex+" tdIndex="+tdindex+"  x1="+x1+" x2="+x2+" y1="+y1+" y2="+y2+">"; //v-model="+keyname+"
 			List<TextdictInfo_vo> optionList = textdictInfo.getTextInfo();
 			if(optionList!=null && optionList.size()>=1){
 				for (int i= 0 ; i<optionList.size();i++)
@@ -197,37 +197,46 @@ public class TextdictInfoController extends BladeController {
 			}
 			selectText += "</el-select>";
 			element.empty().append(selectText);
+			element.children().get(0).attr("@focus","getInformation("+oncklickText+")");
 		}else if(textdictInfo.getTextId().equals("radio")){ // 单选按钮
 
-			String radioText = "<template>";
+			String radioText = "<template v-model="+vmode+" keyname="+keyname+" weighing="+weighing+" placeholder="+placeholder+" trIndex="+trindex+" tdIndex="+tdindex+"  x1="+x1+" x2="+x2+" y1="+y1+" y2="+y2+">";
 			List<TextdictInfo_vo> optionList = textdictInfo.getTextInfo();
 			if(optionList!=null && optionList.size()>=1){
 				for (int i= 0 ; i<optionList.size();i++)
-					radioText +=" <el-radio  label="+i+">"+optionList.get(i).getDictValue()+"</el-radio>";
+					radioText +=" <el-radio v-model="+vmode+"  label="+i+">"+optionList.get(i).getDictValue()+"</el-radio>";
 			}
 			radioText += "</template>";
 			element.empty().append(radioText);
+			element.children().get(0).attr("@focus","getInformation("+oncklickText+")");
 		}else if(textdictInfo.getTextId().equals("checkbox")){ // 多选框
-			String checkbox = "";
+
+			String checkbox = "<template v-model="+vmode+" keyname="+keyname+" weighing="+weighing+" placeholder="+placeholder+" trIndex="+trindex+" tdIndex="+tdindex+"  x1="+x1+" x2="+x2+" y1="+y1+" y2="+y2+">";
 			List<TextdictInfo_vo> optionList = textdictInfo.getTextInfo();
 			if(optionList!=null && optionList.size()>=1){
 				for (int i= 0 ; i<optionList.size();i++)
 					checkbox +="<el-checkbox>"+optionList.get(i).getDictValue()+"</el-checkbox>";
 			}
+			checkbox += "</template>";
 			element.empty().append(checkbox);
+			element.children().get(0).attr("@focus","getInformation("+oncklickText+")");
 		}else if(textdictInfo.getTextId().equals("date")){ // 日期
 			element.empty().append("<el-date-picker v-model="+vmode+" type='date' format='YYYY年MM月DD日' placeholder="+placeholder+" keyname="+keyname+" weighing="+weighing+"  @contextmenu.prevent.native='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.children().get(0).attr("@focus","getInformation("+oncklickText+")");
 		}else if(textdictInfo.getTextId().equals("daterange")){ // 时间段
-			element.empty().append("<el-date-picker  v-model="+vmode+" type='datetimerange'  start-placeholder='开始日期'  end-placeholder='结束日期' format='YYYY年MM月DD日' trIndex="+trindex+" tdIndex="+tdindex+"  x1="+x1+" x2="+x2+" y1="+y1+" y2="+y2+">");
-			element.children().get(0).attr("keyname",keyname);
+
+			element.empty().append("<el-date-picker  v-model="+vmode+" type='datetimerange' placeholder="+placeholder+"  start-placeholder='开始日期'  end-placeholder='结束日期' format='YYYY年MM月DD日' trIndex="+trindex+" keyname="+keyname+" weighing="+weighing+" tdIndex="+tdindex+"  x1="+x1+" x2="+x2+" y1="+y1+" y2="+y2+">");
+			element.children().get(0).attr("@focus","getInformation("+oncklickText+")");
+
 		}else if(textdictInfo.getTextId().equals("img")){
-			element.empty().append("<el-upload class='hc-upload-table-form' action='/api/blade-resource/oss/endpoint/put-file' trIndex="+trindex+" tdIndex="+tdindex+"  x1="+x1+" x2="+x2+" y1="+y1+" y2="+y2+"  @exceed='formUploadExceed' accept='image/png,image/jpg,image/jpeg' :headers='getTokenHeader' :show-file-list='false' > <img v-if='"+vmode+"' :src="+vmode+" class='hc-table-form-img' /> <div class='hc-table-form-icon' v-else> 点此选择文件并上传 </div> </el-upload>");
+			element.empty().append("<el-upload placeholder="+placeholder+" v-model="+vmode+" keyname="+keyname+" weighing="+weighing+"  class='hc-upload-table-form' action='/api/blade-resource/oss/endpoint/put-file' trIndex="+trindex+" tdIndex="+tdindex+"  x1="+x1+" x2="+x2+" y1="+y1+" y2="+y2+"  @exceed='formUploadExceed' accept='image/png,image/jpg,image/jpeg' :headers='getTokenHeader' :show-file-list='false' > <img v-if='"+vmode+"' :src="+vmode+" class='hc-table-form-img' /> <div class='hc-table-form-icon' v-else> 点此选择文件并上传 </div> </el-upload>");
 			element.children().get(0).attr("@success","formUploadSuccess($event,'"+keyname+"')");
+			element.attr("@focus","getInformation("+oncklickText+")");
+			element.attr("tabindex","-1");
 		}
 			File writefile = new File(wbsTreePrivate.getHtmlUrl());
 		FileUtil.writeToFile(writefile, doc.html(), Boolean.parseBoolean("UTF-8"));
-
+		Thread.sleep(300);
 		return R.success("操作成功");
 	}
 

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

@@ -42,7 +42,7 @@ public interface ExcelTabMapper extends BaseMapper<ExcelTab> {
 	 * @param excelTab
 	 * @return
 	 */
-	List<ExcelTabVO> selectExcelTabPage(IPage page, ExcelTabVO excelTab);
+	List<ExcelTabVO> selectExcelTabPage(IPage page, @Param("excelTab") ExcelTabVO excelTab);
 
 	/**
 	 * 懒加载获取树形节点

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

@@ -50,6 +50,10 @@
         select x.id,x.create_time,x.name,
                (SELECT count(1) from m_excel_tab a where  FIND_IN_SET(x.id,a.alias) and a.is_deleted = 0 and a.file_type=3) as tab_cout
         from m_excel_tab x  where is_deleted = 0 and parent_id =#{param2.parentId}
+        <if test="excelTab.name!=null and excelTab.name!=''">
+            AND x.name  like concat(concat('%', #{excelTab.name}),'%')
+        </if>
+
     </select>
 
     <select id="tabLazyTree" resultMap="treeNodeResultMap" >

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/TextdictInfoMapper.xml

@@ -14,6 +14,8 @@
         <result column="col_key" property="colKey"/>
         <result column="sig_role_id" property="sigRoleId"/>
         <result column="is_deleted" property="isDeleted"/>
+        <result column="sign_name" property="signName"/>
+        <result column="wz_name" property="wzName"/>
     </resultMap>
 
     <select id="selectTextdictInfoPage" resultMap="textdictInfoResultMap">