hongchuangyanfa 2 سال پیش
والد
کامیت
1863a5aba8

+ 1 - 0
blade-gateway/src/main/java/org/springblade/gateway/provider/AuthProvider.java

@@ -35,6 +35,7 @@ public class AuthProvider {
 		DEFAULT_SKIP_URL.add("/example");
 		DEFAULT_SKIP_URL.add("/oauth/token/**");
 		DEFAULT_SKIP_URL.add("/loginByToken");
+		DEFAULT_SKIP_URL.add("/exceltab/callbackSave");
 		DEFAULT_SKIP_URL.add("/oauth/captcha/**");
 		DEFAULT_SKIP_URL.add("/oauth/clear-cache/**");
 		DEFAULT_SKIP_URL.add("/oauth/user-info");

+ 1 - 1
blade-service/blade-business/pom.xml

@@ -157,7 +157,7 @@
                     <target>${java.version}</target>
                     <encoding>${project.build.sourceEncoding}</encoding>
                     <compilerArguments>
-                        <bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar;${java.home}/lib/jsse.jar
+                        <bootclasspath>${java.home}/lib/rt.jar:${java.home}/lib/jce.jar:${java.home}/lib/jsse.jar
                         </bootclasspath>
                     </compilerArguments>
                 </configuration>

+ 1 - 1
blade-service/blade-manager/pom.xml

@@ -176,7 +176,7 @@
                     <target>${java.version}</target>
                     <encoding>${project.build.sourceEncoding}</encoding>
                     <compilerArguments>
-                        <bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar;${java.home}/lib/jsse.jar
+                        <bootclasspath>${java.home}/lib/rt.jar:${java.home}/lib/jce.jar:${java.home}/lib/jsse.jar
                         </bootclasspath>
                     </compilerArguments>
                 </configuration>

+ 54 - 43
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -60,6 +60,7 @@ import org.springblade.core.log.exception.ServiceException;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.imageio.ImageIO;
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.awt.*;
@@ -1212,11 +1213,7 @@ public class ExcelTabController extends BladeController {
         }
 
         // 空是否等于值的个数
-        if (null_count == val_count && width == maxCol) {
-            istrue = true;
-        } else {
-            istrue = false;
-        }
+        istrue = null_count == val_count && width == maxCol;
         return xy_type + "," + index_state + "," + width + "," + istrue;
     }
 
@@ -1311,7 +1308,7 @@ public class ExcelTabController extends BladeController {
         String nodeName = wbsTreeContractList2.get(0).getNodeName();
 
         if (nodeName.indexOf("__") >= 0) {
-            String oldName[] = nodeName.split("__");
+            String[] oldName = nodeName.split("__");
             nodeName = oldName[0] + "__" + (Integer.parseInt(oldName[1]) + 1);
         } else {
             nodeName = nodeName + "__" + 1;
@@ -1641,7 +1638,7 @@ public class ExcelTabController extends BladeController {
                         if (ObjectUtil.isNotEmpty(dataMap)) {
                             for (String val : dataMap.keySet()) {
                                 if (val.indexOf("__") >= 0) {
-                                    String DataVal[] = val.split("__");
+                                    String[] DataVal = val.split("__");
                                     String[] xy = DataVal[1].split("_");
                                     Element data = trs.get(Integer.parseInt(xy[0])).select("td").get(Integer.parseInt(xy[1]));
 
@@ -1663,11 +1660,11 @@ public class ExcelTabController extends BladeController {
                                             if (myData.indexOf(",") >= 0 && myData.indexOf("]") >= 0) {
                                                 myData = myData.replace("[", "").replace("]", "");
                                                 String[] dataVal = myData.split(",");
-                                                String Start_dataStr[] = dataVal[0].split("T")[0].split("-");
-                                                String StartDate = StringUtil.format("{}年{}月{}日", new Object[]{Start_dataStr[0], Start_dataStr[1], Integer.parseInt(Start_dataStr[2]) + 1});
+                                                String[] Start_dataStr = dataVal[0].split("T")[0].split("-");
+                                                String StartDate = StringUtil.format("{}年{}月{}日", Start_dataStr[0], Start_dataStr[1], Integer.parseInt(Start_dataStr[2]) + 1);
 
-                                                String end_dataStr[] = dataVal[1].split("T")[0].split("-");
-                                                String endDate = StringUtil.format("{}年{}月{}日", new Object[]{end_dataStr[0], end_dataStr[1], Integer.parseInt(end_dataStr[2]) + 1});
+                                                String[] end_dataStr = dataVal[1].split("T")[0].split("-");
+                                                String endDate = StringUtil.format("{}年{}月{}日", end_dataStr[0], end_dataStr[1], Integer.parseInt(end_dataStr[2]) + 1);
 
                                                 if (StartDate.equals(endDate)) {
                                                     myData = StartDate;
@@ -1675,14 +1672,14 @@ public class ExcelTabController extends BladeController {
                                                     myData = StartDate + "-" + endDate;
                                                 }
                                             } else {
-                                                String dataStr[] = myData.split("T")[0].split("-");
-                                                myData = StringUtil.format("{}年{}月{}日", new Object[]{dataStr[0], dataStr[1], Integer.parseInt(dataStr[2]) + 1});
+                                                String[] dataStr = myData.split("T")[0].split("-");
+                                                myData = StringUtil.format("{}年{}月{}日", dataStr[0], dataStr[1], Integer.parseInt(dataStr[2]) + 1);
                                             }
                                         }
 
                                         if (myData.indexOf("https") >= 0 && myData.indexOf("aliyuncs") >= 0) {
                                             Element element = trs.get(y1).select("td").get(x1);
-                                            String styles[] = element.attr("style").split(";");
+                                            String[] styles = element.attr("style").split(";");
                                             int Height = 0;
                                             for (String sty : styles) {
                                                 if (sty.indexOf("height:") >= 0) {
@@ -1713,7 +1710,7 @@ public class ExcelTabController extends BladeController {
                         if (textdictInfos != null && !textdictInfos.isEmpty()) {
                             textdictInfos.forEach(e -> {
                                 String key = e.getColKey();
-                                String keys[] = key.split("__");
+                                String[] keys = key.split("__");
                                 String[] trtd = keys[1].split("_");
                                 Element data = trs.get(Integer.parseInt(trtd[0])).select("td").get(Integer.parseInt(trtd[1]));
                                 int x1 = Integer.parseInt(data.children().get(0).attr("x1"));
@@ -1827,7 +1824,7 @@ public class ExcelTabController extends BladeController {
                         // 时间段处理
                         if (StringUtils.isNotEmpty(tabVal) && !tabVal.equals("null")) {
                             if (tabVal.indexOf("T") >= 0 && tabVal.indexOf(".000Z]") >= 0) {
-                                String tabData[] = tabVal.split("_\\^_");
+                                String[] tabData = tabVal.split("_\\^_");
 
                                 if (reData.containsKey("pickerKey")) {
                                     String pickerKey = reData.get("pickerKey") + "," + key + "__" + tabData[1];
@@ -1838,24 +1835,24 @@ public class ExcelTabController extends BladeController {
 
                                 String sql = tabData[0];
                                 sql = sql.replaceAll("\\[", "['");
-                                sql = sql.replaceAll("]", "\']");
-                                sql = sql.replaceAll("000Z,", "000Z\',");
-                                sql = sql.replaceAll(", 20", ", \'20");
+                                sql = sql.replaceAll("]", "']");
+                                sql = sql.replaceAll("000Z,", "000Z',");
+                                sql = sql.replaceAll(", 20", ", '20");
                                 sql = sql.replaceAll("'", "");
                                 reData.put(key + "__" + tabData[1], sql);
                             } else if (tabVal.indexOf("T") >= 0 && tabVal.indexOf(".000Z") >= 0) { //时间
 
-                                String tabData[] = tabVal.split("_\\^_");
+                                String[] tabData = tabVal.split("_\\^_");
                                 reData.put(key + "__" + tabData[1], tabData[0]);
 
                             } else if (tabVal.indexOf("☆") >= 0) {
-                                String mysql[] = tabVal.split("☆");
+                                String[] mysql = tabVal.split("☆");
                                 for (String data : mysql) {
-                                    String tabData[] = data.split("_\\^_");
+                                    String[] tabData = data.split("_\\^_");
                                     reData.put(key + "__" + tabData[1], tabData[0]);
                                 }
                             } else if (tabVal.indexOf("_^_") >= 0) {
-                                String tabData[] = tabVal.split("_\\^_");
+                                String[] tabData = tabVal.split("_\\^_");
                                 reData.put(key + "__" + tabData[1], tabData[0]);
                             } else {
                                 reData.put(key, tabVal);
@@ -1960,8 +1957,8 @@ public class ExcelTabController extends BladeController {
                         }
                     }
                     //组装SQL
-                    insertSql.append(" (").append(keySql.toString().substring(1)).append(") ");
-                    insertSql.append(" VALUES(").append(valueSql.toString().substring(1)).append(")");
+                    insertSql.append(" (").append(keySql.substring(1)).append(") ");
+                    insertSql.append(" VALUES(").append(valueSql.substring(1)).append(")");
 
                     insertSqlList.add(insertSql.toString());
                 }
@@ -2020,7 +2017,7 @@ public class ExcelTabController extends BladeController {
                                 // 时间段处理
                                 if (StringUtils.isNotEmpty(tabVal) && !tabVal.equals("null")) {
                                     if (tabVal.indexOf("T") >= 0 && tabVal.indexOf(".000Z]") >= 0) {
-                                        String tabData[] = tabVal.split("_\\^_");
+                                        String[] tabData = tabVal.split("_\\^_");
 
                                         if (reData.containsKey("pickerKey")) {
                                             String pickerKey = reData.get("pickerKey") + "," + key + "__" + tabData[1];
@@ -2031,24 +2028,24 @@ public class ExcelTabController extends BladeController {
 
                                         String sql = tabData[0];
                                         sql = sql.replaceAll("\\[", "['");
-                                        sql = sql.replaceAll("]", "\']");
-                                        sql = sql.replaceAll("000Z,", "000Z\',");
-                                        sql = sql.replaceAll(", 20", ", \'20");
+                                        sql = sql.replaceAll("]", "']");
+                                        sql = sql.replaceAll("000Z,", "000Z',");
+                                        sql = sql.replaceAll(", 20", ", '20");
                                         sql = sql.replaceAll("'", "");
                                         reData.put(key + "__" + tabData[1], sql);
                                     } else if (tabVal.indexOf("T") >= 0 && tabVal.indexOf(".000Z") >= 0) { //时间
 
-                                        String tabData[] = tabVal.split("_\\^_");
+                                        String[] tabData = tabVal.split("_\\^_");
                                         reData.put(key + "__" + tabData[1], tabData[0]);
 
                                     } else if (tabVal.indexOf("☆") >= 0) {
-                                        String mysql[] = tabVal.split("☆");
+                                        String[] mysql = tabVal.split("☆");
                                         for (String data : mysql) {
-                                            String tabData[] = data.split("_\\^_");
+                                            String[] tabData = data.split("_\\^_");
                                             reData.put(key + "__" + tabData[1], tabData[0]);
                                         }
                                     } else if (tabVal.indexOf("_^_") >= 0) {
-                                        String tabData[] = tabVal.split("_\\^_");
+                                        String[] tabData = tabVal.split("_\\^_");
                                         reData.put(key + "__" + tabData[1], tabData[0]);
                                     } else {
                                         reData.put(key, tabVal);
@@ -2135,7 +2132,7 @@ public class ExcelTabController extends BladeController {
                                     if (ObjectUtil.isNotEmpty(dataMap)) {
                                         for (String val : dataMap.keySet()) {
                                             if (val.indexOf("__") >= 0) {
-                                                String DataVal[] = val.split("__");
+                                                String[] DataVal = val.split("__");
                                                 String[] xy = DataVal[1].split("_");
                                                 Element data = trs.get(Integer.parseInt(xy[0])).select("td").get(Integer.parseInt(xy[1]));
 
@@ -2157,11 +2154,11 @@ public class ExcelTabController extends BladeController {
                                                         if (myData.indexOf(",") >= 0 && myData.indexOf("]") >= 0) {
                                                             myData = myData.replace("[", "").replace("]", "");
                                                             String[] dataVal = myData.split(",");
-                                                            String Start_dataStr[] = dataVal[0].split("T")[0].split("-");
-                                                            String StartDate = StringUtil.format("{}年{}月{}日", new Object[]{Start_dataStr[0], Start_dataStr[1], Integer.parseInt(Start_dataStr[2]) + 1});
+                                                            String[] Start_dataStr = dataVal[0].split("T")[0].split("-");
+                                                            String StartDate = StringUtil.format("{}年{}月{}日", Start_dataStr[0], Start_dataStr[1], Integer.parseInt(Start_dataStr[2]) + 1);
 
-                                                            String end_dataStr[] = dataVal[1].split("T")[0].split("-");
-                                                            String endDate = StringUtil.format("{}年{}月{}日", new Object[]{end_dataStr[0], end_dataStr[1], Integer.parseInt(end_dataStr[2]) + 1});
+                                                            String[] end_dataStr = dataVal[1].split("T")[0].split("-");
+                                                            String endDate = StringUtil.format("{}年{}月{}日", end_dataStr[0], end_dataStr[1], Integer.parseInt(end_dataStr[2]) + 1);
 
                                                             if (StartDate.equals(endDate)) {
                                                                 myData = StartDate;
@@ -2169,14 +2166,14 @@ public class ExcelTabController extends BladeController {
                                                                 myData = StartDate + "-" + endDate;
                                                             }
                                                         } else {
-                                                            String dataStr[] = myData.split("T")[0].split("-");
-                                                            myData = StringUtil.format("{}年{}月{}日", new Object[]{dataStr[0], dataStr[1], Integer.parseInt(dataStr[2]) + 1});
+                                                            String[] dataStr = myData.split("T")[0].split("-");
+                                                            myData = StringUtil.format("{}年{}月{}日", dataStr[0], dataStr[1], Integer.parseInt(dataStr[2]) + 1);
                                                         }
                                                     }
 
                                                     if (myData.indexOf("https") >= 0 && myData.indexOf("aliyuncs") >= 0) {
                                                         Element element = trs.get(y1).select("td").get(x1);
-                                                        String styles[] = element.attr("style").split(";");
+                                                        String[] styles = element.attr("style").split(";");
                                                         int Height = 0;
                                                         for (String sty : styles) {
                                                             if (sty.indexOf("height:") >= 0) {
@@ -2207,7 +2204,7 @@ public class ExcelTabController extends BladeController {
                                     if (textdictInfos != null && !textdictInfos.isEmpty()) {
                                         textdictInfos.forEach(e -> {
                                             String key = e.getColKey();
-                                            String keys[] = key.split("__");
+                                            String[] keys = key.split("__");
                                             String[] trtd = keys[1].split("_");
                                             Element data = trs.get(Integer.parseInt(trtd[0])).select("td").get(Integer.parseInt(trtd[1]));
                                             int x1 = Integer.parseInt(data.children().get(0).attr("x1"));
@@ -2455,7 +2452,7 @@ public class ExcelTabController extends BladeController {
 
                             if (first.indexOf("质量等级评定为") >= 0 && end.indexOf("。") >= 0) {
                                 if (first.indexOf("。") >= 0) {
-                                    first = first.substring(first.indexOf("。") + 1, first.length());
+                                    first = first.substring(first.indexOf("。") + 1);
                                 }
                                 trTitleName = titt + "_" + first.substring(0, first.length() - 2);
                             }
@@ -2616,4 +2613,18 @@ public class ExcelTabController extends BladeController {
     }
 
 
+    /**
+     * 在线excel 修改回调
+     * @param request
+     * @param response
+     * @throws IOException
+     */
+    @PostMapping(value = "/callbackSave", produces = "application/json;charset=UTF-8")
+    @ApiOperation(value = "onlyOffice保存回调", notes = "onlyOffice保存回调")
+    @ApiOperationSupport(order = 35)
+    @ResponseBody
+    public void saveWord(HttpServletRequest request, HttpServletResponse response) throws IOException {
+        excelTabService.callbackSave(request, response);
+    }
+
 }

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

@@ -78,7 +78,8 @@ public class FirstController extends BladeController {
     private final InformationQueryClient informationQueryClient;
 
     private final ITextdictInfoService textdictInfoService;
-
+    // 项目信息
+    private final IProjectInfoService projectInfoService;
 
     /**
      * 首件表单获取 html页面
@@ -107,7 +108,28 @@ public class FirstController extends BladeController {
         htmlString = htmlString.replaceAll("title", "titlexx");
         // 解析 style
         Document doc = Jsoup.parse(htmlString);
+
+
+        ProjectInfo projectInfo = projectInfoService.getById(wbsTreeContract.getProjectId());
+        // 添加标题显示
         Element table = doc.select("table").first();
+        Elements trs = table.select("tr");
+        for (int i = 1; i < 6; i++) {
+            Element tr = trs.get(i);
+            Elements tds = tr.select("td");
+            for (int j = 0; j < tds.size(); j++) {
+                Element data = tds.get(j);
+                int colspan = data.attr("COLSPAN").equals("") ? 0 : Integer.parseInt(data.attr("COLSPAN"));
+                String style = data.attr("style");
+                if (style.indexOf("font-size") >= 0) {
+                    int fontsize = Integer.parseInt(style.substring(style.indexOf("font-size:") + 10, style.indexOf(".0pt")));
+                    if (StringUtils.isNotEmpty(data.text()) && fontsize >= 12) {
+                        trs.get(i - 1).select("td").get(0).text(projectInfo.getProjectName());
+                    }
+                }
+            }
+        }
+
         doc.select("Col").remove();
         fileInputStream.close();
         JSONObject reData = new JSONObject();
@@ -226,7 +248,7 @@ public class FirstController extends BladeController {
                                     if (ObjectUtil.isNotEmpty(dataMap)) {
                                         for (String val : dataMap.keySet()) {
                                             if (val.indexOf("__") >= 0) {
-                                                String DataVal[] = val.split("__");
+                                                String[] DataVal = val.split("__");
                                                 String[] xy = DataVal[1].split("_");
                                                 Element data = trs.get(Integer.parseInt(xy[0])).select("td").get(Integer.parseInt(xy[1]));
 
@@ -248,11 +270,11 @@ public class FirstController extends BladeController {
                                                         if (myData.indexOf(",") >= 0 && myData.indexOf("]") >= 0) {
                                                             myData = myData.replace("[", "").replace("]", "");
                                                             String[] dataVal = myData.split(",");
-                                                            String Start_dataStr[] = dataVal[0].split("T")[0].split("-");
-                                                            String StartDate = StringUtil.format("{}年{}月{}日", new Object[]{Start_dataStr[0], Start_dataStr[1], Integer.parseInt(Start_dataStr[2]) + 1});
+                                                            String[] Start_dataStr = dataVal[0].split("T")[0].split("-");
+                                                            String StartDate = StringUtil.format("{}年{}月{}日", Start_dataStr[0], Start_dataStr[1], Integer.parseInt(Start_dataStr[2]) + 1);
 
-                                                            String end_dataStr[] = dataVal[1].split("T")[0].split("-");
-                                                            String endDate = StringUtil.format("{}年{}月{}日", new Object[]{end_dataStr[0], end_dataStr[1], Integer.parseInt(end_dataStr[2]) + 1});
+                                                            String[] end_dataStr = dataVal[1].split("T")[0].split("-");
+                                                            String endDate = StringUtil.format("{}年{}月{}日", end_dataStr[0], end_dataStr[1], Integer.parseInt(end_dataStr[2]) + 1);
 
                                                             if (StartDate.equals(endDate)) {
                                                                 myData = StartDate;
@@ -260,14 +282,14 @@ public class FirstController extends BladeController {
                                                                 myData = StartDate + "-" + endDate;
                                                             }
                                                         } else {
-                                                            String dataStr[] = myData.split("T")[0].split("-");
-                                                            myData = StringUtil.format("{}年{}月{}日", new Object[]{dataStr[0], dataStr[1], Integer.parseInt(dataStr[2]) + 1});
+                                                            String[] dataStr = myData.split("T")[0].split("-");
+                                                            myData = StringUtil.format("{}年{}月{}日", dataStr[0], dataStr[1], Integer.parseInt(dataStr[2]) + 1);
                                                         }
                                                     }
 
                                                     if (myData.indexOf("https") >= 0 && myData.indexOf("aliyuncs") >= 0) {
                                                         Element element = trs.get(y1).select("td").get(x1);
-                                                        String styles[] = element.attr("style").split(";");
+                                                        String[] styles = element.attr("style").split(";");
                                                         int Height = 0;
                                                         for (String sty : styles) {
                                                             if (sty.indexOf("height:") >= 0) {
@@ -298,7 +320,7 @@ public class FirstController extends BladeController {
                                     if (textdictInfos != null && !textdictInfos.isEmpty()) {
                                         textdictInfos.forEach(e -> {
                                             String key = e.getColKey();
-                                            String keys[] = key.split("__");
+                                            String[] keys = key.split("__");
                                             String[] trtd = keys[1].split("_");
                                             Element data = trs.get(Integer.parseInt(trtd[0])).select("td").get(Integer.parseInt(trtd[1]));
                                             int x1 = Integer.parseInt(data.children().get(0).attr("x1"));
@@ -401,7 +423,7 @@ public class FirstController extends BladeController {
                                 // 时间段处理
                                 if (StringUtils.isNotEmpty(tabVal) && !tabVal.equals("null")) {
                                     if (tabVal.indexOf("T") >= 0 && tabVal.indexOf(".000Z]") >= 0) {
-                                        String tabData[] = tabVal.split("_\\^_");
+                                        String[] tabData = tabVal.split("_\\^_");
 
                                         if (reData.containsKey("pickerKey")) {
                                             String pickerKey = reData.get("pickerKey") + "," + key + "__" + tabData[1];
@@ -412,24 +434,24 @@ public class FirstController extends BladeController {
 
                                         String sql = tabData[0];
                                         sql = sql.replaceAll("\\[", "['");
-                                        sql = sql.replaceAll("]", "\']");
-                                        sql = sql.replaceAll("000Z,", "000Z\',");
-                                        sql = sql.replaceAll(", 20", ", \'20");
+                                        sql = sql.replaceAll("]", "']");
+                                        sql = sql.replaceAll("000Z,", "000Z',");
+                                        sql = sql.replaceAll(", 20", ", '20");
                                         sql = sql.replaceAll("'", "");
                                         reData.put(key + "__" + tabData[1], sql);
                                     } else if (tabVal.indexOf("T") >= 0 && tabVal.indexOf(".000Z") >= 0) { //时间
 
-                                        String tabData[] = tabVal.split("_\\^_");
+                                        String[] tabData = tabVal.split("_\\^_");
                                         reData.put(key + "__" + tabData[1], tabData[0]);
 
                                     } else if (tabVal.indexOf("☆") >= 0) {
-                                        String mysql[] = tabVal.split("☆");
+                                        String[] mysql = tabVal.split("☆");
                                         for (String data : mysql) {
-                                            String tabData[] = data.split("_\\^_");
+                                            String[] tabData = data.split("_\\^_");
                                             reData.put(key + "__" + tabData[1], tabData[0]);
                                         }
                                     } else if (tabVal.indexOf("_^_") >= 0) {
-                                        String tabData[] = tabVal.split("_\\^_");
+                                        String[] tabData = tabVal.split("_\\^_");
                                         reData.put(key + "__" + tabData[1], tabData[0]);
                                     } else {
                                         reData.put(key, tabVal);

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

@@ -197,6 +197,7 @@ public class LinkdataInfoController extends BladeController {
 			if(element.html().indexOf("el-tooltip")>=0){
 				element1.removeAttr("placeholder");
 				element1.removeAttr("keyName");
+				element1.removeAttr("id");
 				element1.removeAttr("weighing");
 				element1.removeAttr("v-model");
 				element1.removeAttr("@focus");
@@ -205,15 +206,20 @@ public class LinkdataInfoController extends BladeController {
 
 			element1.removeAttr("placeholder");
 			element1.removeAttr("keyName");
+			element1.removeAttr("id");
 			element1.removeAttr("weighing");
 			element1.removeAttr("v-model");
 			element1.removeAttr("@focus");
 
-			element1.attr("placeholder",enName).attr("keyName",dataInfo2);
+			if(element.html().indexOf("hc-form-checkbox-group")>=0){
+				element1.removeAttr(":val");
+				element1.attr(":val","formData."+dataInfo2);
+			}
+
+			element1.attr("placeholder",enName).attr("keyName",dataInfo2).attr("id",dataInfo2);
 			element1.attr("weighing","100");
 			element1.attr("v-model","formData."+dataInfo2);
 			element.attr("@click","getInformation('"+enName+"',"+linkdataInfo.getTrIndex()+","+linkdataInfo.getTdIndex()+")");
-			System.out.println(element1);
 		}
 
 		File writefile = new File(wbsTreePrivate.getHtmlUrl());

+ 9 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IExcelTabService.java

@@ -27,7 +27,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.manager.vo.ExcelTabWbsTypeVO;
 import org.springblade.manager.vo.WbsTreeVO;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.io.FileNotFoundException;
+import java.io.IOException;
 import java.sql.SQLException;
 import java.util.List;
 import java.util.Map;
@@ -144,5 +147,10 @@ public interface IExcelTabService extends BaseService<ExcelTab> {
 
     boolean tabSort(List<String> idList);
 
-
+    /**
+     * 在线excel 保存回调
+     * @param request
+     * @param response
+     */
+    void callbackSave(HttpServletRequest request, HttpServletResponse response) throws IOException;
 }

+ 96 - 23
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -18,6 +18,7 @@ package org.springblade.manager.service.impl;
 
 import cn.hutool.core.date.StopWatch;
 import cn.hutool.log.StaticLog;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -28,6 +29,7 @@ import com.mixsmart.utils.ListUtils;
 import com.spire.xls.*;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.ObjectUtils;
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
@@ -64,11 +66,12 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.imageio.ImageIO;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.awt.*;
 import java.awt.image.BufferedImage;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
+import java.io.*;
+import java.net.URL;
 import java.text.SimpleDateFormat;
 import java.util.List;
 import java.util.*;
@@ -503,6 +506,78 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         return true;
     }
 
+
+    /**
+     * 在线excel 编辑回调
+     * @param request
+     * @param response
+     */
+    @Override
+    public void callbackSave(HttpServletRequest request, HttpServletResponse response) throws IOException {
+        PrintWriter writer = response.getWriter();
+        String body = "";
+        try {
+            Scanner scanner = new Scanner(request.getInputStream());
+            scanner.useDelimiter("\\A");
+            body = scanner.hasNext() ? scanner.next() : "";
+            scanner.close();
+        } catch (Exception ex) {
+            writer.write("get request.getInputStream error:" + ex.getMessage());
+            return;
+        }
+        if (body.isEmpty()) {
+            writer.write("empty request.getInputStream");
+            return;
+        }
+        JSONObject jsonObj = JSON.parseObject(body);
+        System.out.println("回调参数对象 =====》》》 " + jsonObj);
+        int status = (Integer) jsonObj.get("status");
+        int saved = 0;
+        //status=6,表示点击保存按钮 2 关闭保存
+        if (status == 3 || status == 6) //MustSave, Corrupted
+        {
+            //获取url
+            String downloadUri = (String) jsonObj.get("url");
+            downloadUri = downloadUri.replaceAll("amp;","");
+            try {
+                //获取onlyOffice缓存中的文件流
+                String fileName = request.getParameter("fileName");
+                System.out.println("====下载的文件名:" + fileName);
+                URL url = new URL(downloadUri);
+                java.net.HttpURLConnection connection = (java.net.HttpURLConnection) url.openConnection();
+                InputStream stream = connection.getInputStream();
+                if (stream == null) {
+                    throw new Exception("Stream is null");
+                }
+                Long tabId = jsonObj.getLong("key");
+                if (tabId == null) {
+                    throw new Exception("key不能为空");
+                }
+                //获取数据库信息
+                ExcelTab excelTab = baseMapper.selectById(tabId);
+
+                //上传新文件到文件服务器
+                byte[] officeByte = IoUtil.readToByteArray(stream);
+                BladeFile bladeFile = newIOSSClient.updateFile(officeByte, excelTab.getName());
+
+                //修改本地数据信息
+                excelTab.setHtmlUrl(bladeFile.getLink());
+                //获取文件大小
+                int size= connection.getContentLength()/1024/1024; //单位M
+                excelTab.setAttachSize(Long.parseLong(size+""));
+                baseMapper.updateById(excelTab);
+                connection.disconnect();
+                //根据文件编号删除文件服务器的文件
+
+            } catch (Exception ex) {
+                saved = 1;
+                ex.printStackTrace();
+            }
+        }
+        writer.write("{\"error\":" + saved + "}");
+    }
+
+
     /**
      * 保存首件
      */
@@ -822,7 +897,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 // 时间段处理
                 if (StringUtils.isNotEmpty(tabVal) && !tabVal.equals("null")) {
                     if (tabVal.indexOf("T") >= 0 && tabVal.indexOf(".000Z]") >= 0) {
-                        String tabData[] = tabVal.split("_\\^_");
+                        String[] tabData = tabVal.split("_\\^_");
 
                         if (reData.containsKey("pickerKey")) {
                             String pickerKey = reData.get("pickerKey") + "," + key + "__" + tabData[1];
@@ -833,9 +908,9 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 
                         String sql = tabData[0];
                         sql = sql.replaceAll("\\[", "['");
-                        sql = sql.replaceAll("]", "\']");
-                        sql = sql.replaceAll("000Z,", "000Z\',");
-                        sql = sql.replaceAll(", 20", ", \'20");
+                        sql = sql.replaceAll("]", "']");
+                        sql = sql.replaceAll("000Z,", "000Z',");
+                        sql = sql.replaceAll(", 20", ", '20");
                         //   sql = sql.replaceAll("'", "");
                         if (StringUtils.isNotEmpty(tabData[0])) {
                             reData.put(key + "__" + tabData[1], sql);
@@ -843,29 +918,29 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                     } else if (tabVal.indexOf("T") >= 0 && tabVal.indexOf(".000Z") >= 0) { //时间
                         // 时间和字符串合作
                         if (tabVal.indexOf("☆") >= 0) {
-                            String mysql[] = tabVal.split("☆");
+                            String[] mysql = tabVal.split("☆");
                             for (String data : mysql) {
-                                String tabData[] = data.split("_\\^_");
+                                String[] tabData = data.split("_\\^_");
                                 if (StringUtils.isNotEmpty(tabData[0])) {
                                     reData.put(key + "__" + tabData[1], tabData[0]);
                                 }
                             }
                         } else {
-                            String tabData[] = tabVal.split("_\\^_");
+                            String[] tabData = tabVal.split("_\\^_");
                             if (StringUtils.isNotEmpty(tabData[0])) {
                                 reData.put(key + "__" + tabData[1], tabData[0]);
                             }
                         }
                     } else if (tabVal.indexOf("☆") >= 0) {
-                        String mysql[] = tabVal.split("☆");
+                        String[] mysql = tabVal.split("☆");
                         for (String data : mysql) {
-                            String tabData[] = data.split("_\\^_");
+                            String[] tabData = data.split("_\\^_");
                             if (StringUtils.isNotEmpty(tabData[0])) {
                                 reData.put(key + "__" + tabData[1], tabData[0]);
                             }
                         }
                     } else if (tabVal.indexOf("_^_") >= 0) {
-                        String tabData[] = tabVal.split("_\\^_");
+                        String[] tabData = tabVal.split("_\\^_");
                         if (StringUtils.isNotEmpty(tabData[0])) {
                             reData.put(key + "__" + tabData[1], tabData[0]);
                         }
@@ -963,7 +1038,7 @@ 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[] DataVal = val.split("__");
                             String[] xy = DataVal[1].split("_");
 
                             Element data = trs.get(Integer.parseInt(xy[0])).select("td").get(Integer.parseInt(xy[1]));
@@ -1002,8 +1077,8 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                                             myData = StartDate + "-" + endDate;
                                         }
                                     } else {
-                                        String dataStr[] = myData.split("T")[0].split("-");
-                                        myData = StringUtil.format("{}年{}月{}日", new Object[]{dataStr[0], dataStr[1], Integer.parseInt(dataStr[2]) + 1});
+                                        String[] dataStr = myData.split("T")[0].split("-");
+                                        myData = StringUtil.format("{}年{}月{}日", dataStr[0], dataStr[1], Integer.parseInt(dataStr[2]) + 1);
                                     }
                                 }
                                 //https:bladex-test-info.oss-cn-chengdu.aliyuncs.com//upload/20220819/b53cb6700db369381e3b03d7737bcdec.jpg__16_1
@@ -1020,7 +1095,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                                         String dataInfo = trs.get(y1).attr("height");
                                         if (StringUtils.isEmpty(dataInfo)) {
                                             Element firstTd = trs.get(y1 - 1).children().get(0);
-                                            String heg[] = firstTd.attr("style").split(";");
+                                            String[] heg = firstTd.attr("style").split(";");
                                             for (String str : heg) {
                                                 if (str.indexOf("height:") >= 0) {
                                                     picHeight = Integer.parseInt(str.split(":")[1].replaceAll("px", ""));
@@ -1060,7 +1135,6 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                                     cellRange.getCellStyle().getExcelFont().setFontName("EUDC");
                                     cellRange.setText(myData);
                                     System.out.println(cellRange.getStyle().getFont().getFontName());
-                                    ;
                                     System.out.println("后" + cellRange.getText());
                                 }
                             }
@@ -1077,7 +1151,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                 if (textdictInfos != null && !textdictInfos.isEmpty()) {
                     for (TextdictInfo e : textdictInfos) {
                         String key = e.getColKey();
-                        String keys[] = key.split("__");
+                        String[] keys = key.split("__");
                         String[] trtd = keys[1].split("_");
                         Element data = trs.get(Integer.parseInt(trtd[0])).select("td").get(Integer.parseInt(trtd[1]));
                         int x1 = Integer.parseInt(data.children().get(0).attr("x1"));
@@ -1091,7 +1165,6 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                         cellRange.getCellStyle().getFont().setColor(Color.white);
 
                     }
-                    ;
                 }
             }
         }
@@ -1232,9 +1305,9 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 
                         String sql = tabData[0];
                         sql = sql.replaceAll("\\[", "['");
-                        sql = sql.replaceAll("]", "\']");
-                        sql = sql.replaceAll("000Z,", "000Z\',");
-                        sql = sql.replaceAll(", 20", ", \'20");
+                        sql = sql.replaceAll("]", "']");
+                        sql = sql.replaceAll("000Z,", "000Z',");
+                        sql = sql.replaceAll(", 20", ", '20");
                         //   sql = sql.replaceAll("'", "");
                         if (StringUtils.isNotEmpty(tabData[0])) {
                             reData.put(key + "__" + tabData[1], sql);

+ 30 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/utils/FileUtils.java

@@ -1,6 +1,7 @@
 package org.springblade.manager.utils;
 
 import com.aspose.cells.SaveFormat;
+import com.aspose.cells.Workbook;
 import com.itextpdf.text.Document;
 import com.itextpdf.text.pdf.PdfCopy;
 import com.itextpdf.text.pdf.PdfReader;
@@ -14,6 +15,7 @@ import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.util.Units;
 import org.springblade.common.utils.CommonUtil;
 import org.springblade.common.vo.DataVO;
+import org.springblade.core.tool.utils.FileUtil;
 import org.springblade.core.tool.utils.IoUtil;
 import org.springblade.core.tool.utils.ResourceUtil;
 
@@ -21,6 +23,7 @@ import javax.imageio.ImageIO;
 import javax.servlet.http.HttpServletResponse;
 import java.awt.image.BufferedImage;
 import java.io.*;
+import java.net.URL;
 import java.net.URLEncoder;
 import java.util.Arrays;
 import java.util.List;
@@ -194,6 +197,13 @@ public class FileUtils {
         }
     }
 
+
+
+
+
+
+
+
     /**
      * excel 转pdf
      * @param exUrl
@@ -225,7 +235,6 @@ public class FileUtils {
                 pdfFile.mkdir();
             }
             wb.save(pdfUrl, SaveFormat.PDF);
-
         }catch (Exception e){
             e.printStackTrace();
         } finally {
@@ -284,4 +293,24 @@ public class FileUtils {
             e.printStackTrace();
         }
     }
+
+
+
+
+/*    public static void main(String[] args) throws Exception {
+        String downloadUri="http://192.168.0.110:6831/cache/files/data/b6b30b1337cbdc522810_1914/output.xlsx/output.xlsx?md5=vJFs5dZlSpopqwWVH1PV7w&amp;expires=1675247021&amp;filename=output.xlsx";
+        downloadUri = downloadUri.replaceAll("amp;","");
+        URL url = new URL(downloadUri);
+        java.net.HttpURLConnection connection = (java.net.HttpURLConnection) url.openConnection();
+        InputStream stream = connection.getInputStream();
+
+        String excelUrl ="/Users/hongchuangyanfa/Desktop/pdf/1615164421657591808.xlsx";
+
+
+      //  String htmlString = IoUtil.readToString(stream);
+        File writefile = new File(excelUrl);
+        FileUtil.toFile(stream,writefile);
+
+
+    }*/
 }