|
@@ -83,6 +83,7 @@ import java.awt.*;
|
|
import java.awt.image.BufferedImage;
|
|
import java.awt.image.BufferedImage;
|
|
import java.io.*;
|
|
import java.io.*;
|
|
import java.net.URL;
|
|
import java.net.URL;
|
|
|
|
+import java.net.URLConnection;
|
|
import java.net.URLEncoder;
|
|
import java.net.URLEncoder;
|
|
import java.nio.file.Files;
|
|
import java.nio.file.Files;
|
|
import java.nio.file.Path;
|
|
import java.nio.file.Path;
|
|
@@ -316,13 +317,16 @@ public class ExcelTabController extends BladeController {
|
|
@ApiImplicitParam(name = "nodeId", value = "节点id", required = true)
|
|
@ApiImplicitParam(name = "nodeId", value = "节点id", required = true)
|
|
})
|
|
})
|
|
public R putFileAttach(@RequestParam("file") MultipartFile file, Long nodeId) {
|
|
public R putFileAttach(@RequestParam("file") MultipartFile file, Long nodeId) {
|
|
- String file_path = "/Users/hongchuangyanfa/Desktop/";//FileUtils.getSysLocalFileUrl();
|
|
|
|
|
|
+ String file_path = FileUtils.getSysLocalFileUrl();
|
|
ExcelTab detail = excelTabService.getById(nodeId);
|
|
ExcelTab detail = excelTabService.getById(nodeId);
|
|
|
|
|
|
String filecode = SnowFlakeUtil.getId() + "";
|
|
String filecode = SnowFlakeUtil.getId() + "";
|
|
String thmlUrl = file_path + filecode + ".html";
|
|
String thmlUrl = file_path + filecode + ".html";
|
|
String exceUrl = file_path + filecode + "123.xlsx";
|
|
String exceUrl = file_path + filecode + "123.xlsx";
|
|
|
|
|
|
|
|
+ Workbook wb = new Workbook();
|
|
|
|
+ wb.loadFromMHtml(file.getInputStream());
|
|
|
|
+
|
|
ExcelInfoUtils.excelInfo(file.getInputStream(), exceUrl, thmlUrl, "1");
|
|
ExcelInfoUtils.excelInfo(file.getInputStream(), exceUrl, thmlUrl, "1");
|
|
// 上传excel文件
|
|
// 上传excel文件
|
|
BladeFile bladeFile = newIOSSClient.uploadFile(file.getOriginalFilename(), exceUrl);
|
|
BladeFile bladeFile = newIOSSClient.uploadFile(file.getOriginalFilename(), exceUrl);
|
|
@@ -342,6 +346,57 @@ public class ExcelTabController extends BladeController {
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
+ public static InputStream getOSSInputStream(String urlStr) throws Exception {
|
|
|
|
+ //获取OSS文件流
|
|
|
|
+ URL url =new URL(urlStr);
|
|
|
|
+ final URLConnection conn = url.openConnection();
|
|
|
|
+ conn.setConnectTimeout(500);
|
|
|
|
+ conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
|
|
|
|
+ try {
|
|
|
|
+ return conn.getInputStream();
|
|
|
|
+ } catch (Exception e){
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @SneakyThrows
|
|
|
|
+ @PostMapping("/put-file-attach229")
|
|
|
|
+ @ApiOperationSupport(order = 229)
|
|
|
|
+ @ApiOperation(value = "清表上传229", notes = "清表上传229")
|
|
|
|
+ public void putFileAttach2() {
|
|
|
|
+ String sql="select id,file_url,html_url from m_excel_tab where alias LIKE '%1572469868132229121%' and LENGTH(file_url)>=10 and is_deleted=0";
|
|
|
|
+ List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
|
|
|
|
+ for(Map<String, Object> ddat : maps){
|
|
|
|
+
|
|
|
|
+ String fileUrl = ddat.get("file_url")+"";
|
|
|
|
+ String nodeId = ddat.get("id")+"";
|
|
|
|
+ String htmlUrl = ddat.get("html_url")+"";
|
|
|
|
+ System.out.println("----------d"+nodeId+"d--------");
|
|
|
|
+ htmlUrl = htmlUrl.substring(htmlUrl.lastIndexOf("/")+1,htmlUrl.length());
|
|
|
|
+ String htmlUrl2 = "/Users/hongchuangyanfa/Desktop/html2/"+htmlUrl;
|
|
|
|
+
|
|
|
|
+ InputStream ossInputStream = getOSSInputStream(fileUrl);
|
|
|
|
+
|
|
|
|
+ String file_path = FileUtils.getSysLocalFileUrl();
|
|
|
|
+
|
|
|
|
+ String filecode = SnowFlakeUtil.getId() + "";
|
|
|
|
+ // String thmlUrl = file_path + filecode + ".html";
|
|
|
|
+ String exceUrl = file_path + filecode + "123.xlsx";
|
|
|
|
+
|
|
|
|
+ ExcelInfoUtils.excelInfo(ossInputStream, exceUrl, htmlUrl2, "1");
|
|
|
|
+
|
|
|
|
+ // 解析html
|
|
|
|
+ expailHtmlInfo(htmlUrl2, Long.parseLong(nodeId));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 清表编辑 wbs 下拉框选择
|
|
* 清表编辑 wbs 下拉框选择
|
|
*/
|
|
*/
|
|
@@ -909,318 +964,6 @@ public class ExcelTabController extends BladeController {
|
|
return doc.select("table").first() + "";
|
|
return doc.select("table").first() + "";
|
|
}
|
|
}
|
|
|
|
|
|
- // 上传解析 html
|
|
|
|
- public void expailHtmlInfo12231(String thmlUrl, Long excelId) throws Exception {
|
|
|
|
-
|
|
|
|
- // 读取
|
|
|
|
- File file1 = ResourceUtil.getFile(thmlUrl);
|
|
|
|
- String htmlString = IoUtil.readToString(new FileInputStream(file1));
|
|
|
|
-
|
|
|
|
- /*
|
|
|
|
- 解析
|
|
|
|
- 1 解析样式
|
|
|
|
- 2 计算坐标
|
|
|
|
- 3 计算区域位置
|
|
|
|
- */
|
|
|
|
- // 样式集合
|
|
|
|
- Document doc = Jsoup.parse(htmlString);
|
|
|
|
- // 解析 style
|
|
|
|
- Map<String, String> styleMap = getHtmlStyle(doc);
|
|
|
|
- //解析
|
|
|
|
- Element table = doc.select("table").first();
|
|
|
|
- Elements trs = table.select("tr");
|
|
|
|
- // 获取图片信息
|
|
|
|
- Elements imgs = doc.select("img");
|
|
|
|
- // 获取总行列数
|
|
|
|
- int maxCol = doc.select("Col").size();
|
|
|
|
- String[] rowData = new String[trs.size() + 5]; //本来加一的 害怕出现特殊情况 故意 加 5
|
|
|
|
-
|
|
|
|
- // 行的状态
|
|
|
|
- boolean index_state = false;
|
|
|
|
- // 区域划分表示
|
|
|
|
- int xy_type = 1;
|
|
|
|
-
|
|
|
|
- // 解析 excel元素集合
|
|
|
|
- List<ExctabCell> colTitle = new ArrayList<>();
|
|
|
|
-
|
|
|
|
-// 标题集合信息
|
|
|
|
- List<Map<String, String>> zikey = new ArrayList<>();
|
|
|
|
- for (int i = 0; i <= trs.size() - 1; i++) {
|
|
|
|
- Element tr = trs.get(i);
|
|
|
|
- Elements tds = tr.select("td");
|
|
|
|
- String xyInof = getTrInfo(tds, styleMap, index_state, xy_type, maxCol, i, zikey);
|
|
|
|
- xy_type = Integer.parseInt(xyInof.split(",")[0]);
|
|
|
|
- tr.attr("xy_type", xyInof);
|
|
|
|
- index_state = Boolean.parseBoolean(xyInof.split(",")[1]);
|
|
|
|
-
|
|
|
|
- boolean istrue = Boolean.parseBoolean(xyInof.split(",")[3]);
|
|
|
|
-
|
|
|
|
- // 计算单元格坐标
|
|
|
|
- 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"));
|
|
|
|
- int rowspan = data.attr("ROWSPAN").equals("") ? 0 : Integer.parseInt(data.attr("ROWSPAN"));
|
|
|
|
- String keyId = data.attr("class");
|
|
|
|
- if (StringUtils.isNotEmpty(keyId)) {
|
|
|
|
- data.removeAttr("class");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 计算
|
|
|
|
- int x1 = Integer.parseInt(data.attr("x1"));
|
|
|
|
- int x2 = Integer.parseInt(data.attr("x2"));
|
|
|
|
- ;
|
|
|
|
- int y1 = Integer.parseInt(data.attr("y1"));
|
|
|
|
- ;
|
|
|
|
- int y2 = Integer.parseInt(data.attr("y2"));
|
|
|
|
- ;
|
|
|
|
-
|
|
|
|
- String textInfo = data.text().trim().replaceAll(" ", "");
|
|
|
|
- System.out.println("-------==" + textInfo);
|
|
|
|
-
|
|
|
|
- data.text(textInfo.replaceAll(" ", ""));
|
|
|
|
- if (textInfo.indexOf("□") < 0 && !textInfo.isEmpty() && !(textInfo.equals("/") && textInfo.length() < 2) && !(textInfo.indexOf("年") >= 0 && textInfo.indexOf("月") >= 0 && textInfo.indexOf("日") >= 0) && !textInfo.equals("—") && !textInfo.equals("-")) { // 标题区域
|
|
|
|
- Map<String, String> dataInfo = new HashMap<String, String>();
|
|
|
|
- dataInfo.put("name", textInfo);
|
|
|
|
- dataInfo.put("x1", x1 + "");
|
|
|
|
- dataInfo.put("x2", x2 + "");
|
|
|
|
- dataInfo.put("y1", y1 + "");
|
|
|
|
- dataInfo.put("y2", y2 + "");
|
|
|
|
- dataInfo.put("xytype", xy_type + "");
|
|
|
|
- if (textInfo.indexOf("/") < 0 || (textInfo.indexOf("/") >= 0 && textInfo.length() > 1)) { // 带/为分割数据
|
|
|
|
- zikey.add(dataInfo);
|
|
|
|
- }
|
|
|
|
- } else { //空行
|
|
|
|
- List<Map<String, String>> left = new ArrayList<>();
|
|
|
|
- List<Map<String, String>> top = new ArrayList<>();
|
|
|
|
- for (int k = 0; k < zikey.size(); k++) {
|
|
|
|
- String name = zikey.get(k).get("name");
|
|
|
|
- int xx1 = Integer.parseInt(zikey.get(k).get("x1"));
|
|
|
|
- int xx2 = Integer.parseInt(zikey.get(k).get("x2"));
|
|
|
|
- int yy1 = Integer.parseInt(zikey.get(k).get("y1"));
|
|
|
|
- int yy2 = Integer.parseInt(zikey.get(k).get("y2"));
|
|
|
|
- int xytype2 = Integer.parseInt(zikey.get(k).get("xytype"));
|
|
|
|
-
|
|
|
|
- // 左匹配
|
|
|
|
- if (yy1 <= y1 && yy2 >= y2 && xx2 < x1 && xytype2 == xy_type) {
|
|
|
|
- left.add(zikey.get(k));
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //向 上 匹配
|
|
|
|
- if (index_state) {
|
|
|
|
- if (xx1 <= x1 && xx2 >= x2 && yy2 < y1 && xytype2 == xy_type) {
|
|
|
|
- top.add(zikey.get(k));
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- String inputText = "";
|
|
|
|
- // 特征值赛选 规则
|
|
|
|
- for (int k = 0; k < left.size(); k++) { // 左计算
|
|
|
|
- String name = left.get(k).get("name");
|
|
|
|
- int xx2 = Integer.parseInt(left.get(k).get("x2"));
|
|
|
|
- int yy2 = Integer.parseInt(left.get(k).get("y2"));
|
|
|
|
-
|
|
|
|
- if (!StringUtil.isNumeric(name) && name.length() <= 20) { // 数字不匹配
|
|
|
|
- if (index_state) { // 正向规则匹配
|
|
|
|
- if (istrue) { // 是否空格等于值
|
|
|
|
- if (x1 - xx2 <= 1 && y1 == yy2) {
|
|
|
|
- inputText = name;
|
|
|
|
- } else {
|
|
|
|
- inputText += name + "_";
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- inputText += name + "_";
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- if (x1 - xx2 <= 1 && y1 == yy2) {
|
|
|
|
- inputText = name;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 特征值赛选 规则
|
|
|
|
- if (top != null && top.size() >= 1) {
|
|
|
|
- for (int k = 0; k < top.size(); k++) { // 向上计算
|
|
|
|
- String name = top.get(k).get("name");
|
|
|
|
- if (!StringUtil.isNumeric(name) && name.length() <= 20) {
|
|
|
|
- inputText += name + "_";
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (inputText != null && inputText != "" && inputText.indexOf("_") >= 0) {
|
|
|
|
- inputText = inputText.substring(0, inputText.lastIndexOf("_"));
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 质检表特殊处理匹配
|
|
|
|
- String parm = i + "," + j + "," + x1 + "," + x2 + "," + y1 + "," + y2 + ",$event";
|
|
|
|
- // 设置文本信息
|
|
|
|
- ExctabCell exctabCell = new ExctabCell();
|
|
|
|
- if ((textInfo.indexOf("年") >= 0 && textInfo.indexOf("月") >= 0 && textInfo.indexOf("日") >= 0) || inputText.indexOf("日期") >= 0) {
|
|
|
|
- if (inputText.indexOf("日期") >= 0) {
|
|
|
|
- data.empty().append("<el-date-picker type='date' @keyDowns='dateKeydown()' format='YYYY年MM月DD日' value-format='YYYY年MM月DD日' @contextmenu.prevent.native='contextmenuClick(" + parm + ")' @mouseup.right='RightClick(" + parm + ")' trIndex=" + i + " tdIndex=" + j + " x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%;' placeholder='" + inputText + "'> </el-date-picker>");
|
|
|
|
- } else if (textInfo.indexOf("年") >= 0 && textInfo.indexOf("月") >= 0 && textInfo.indexOf("日") >= 0) {
|
|
|
|
- if (inputText.indexOf("专业监理工程师") >= 0) {
|
|
|
|
- inputText = "专业监理工程师_年月日";
|
|
|
|
- } else if (inputText.indexOf("质检工程师") >= 0) {
|
|
|
|
- inputText = "质检工程师_年月日";
|
|
|
|
- } else {
|
|
|
|
- inputText = "年月日";
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- data.empty().append("<el-date-picker @keyDowns='dateKeydown()' type='date' format='YYYY年MM月DD日' value-format='YYYY年MM月DD日' @contextmenu.prevent.native='contextmenuClick(" + parm + ")' @mouseup.right='RightClick(" + parm + ")' trIndex=" + i + " tdIndex=" + j + " x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%;' placeholder='年月日'> </el-date-picker>");
|
|
|
|
- exctabCell.setTextInfo(inputText);
|
|
|
|
- exctabCell.setExctabId(excelId);
|
|
|
|
- exctabCell.setIsDeleted(0);
|
|
|
|
- exctabCell.setXys(i + "_" + j);
|
|
|
|
- colTitle.add(exctabCell);
|
|
|
|
- data.attr("title", inputText);
|
|
|
|
-
|
|
|
|
- } else if (textInfo.indexOf("□") >= 0) { //多选框
|
|
|
|
- exctabCell.setTextInfo(inputText);
|
|
|
|
- exctabCell.setExctabId(excelId);
|
|
|
|
- exctabCell.setIsDeleted(0);
|
|
|
|
- exctabCell.setXys(i + "_" + j);
|
|
|
|
- colTitle.add(exctabCell);
|
|
|
|
- data.attr("title", inputText);
|
|
|
|
- // 添加多选框
|
|
|
|
-
|
|
|
|
- String[] cheText = textInfo.split("□");
|
|
|
|
- JSONArray objs = new JSONArray();
|
|
|
|
- if (cheText != null && cheText.length >= 1) {
|
|
|
|
- int key = 1;
|
|
|
|
- for (String keyval : cheText) {
|
|
|
|
- JSONObject jsonObject = new JSONObject();
|
|
|
|
- if (StringUtils.isNotEmpty(keyval)) {
|
|
|
|
- jsonObject.put("key", key);
|
|
|
|
- jsonObject.put("name", keyval);
|
|
|
|
- objs.add(jsonObject);
|
|
|
|
- keyId += 1;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- JSONObject jsonObject = new JSONObject();
|
|
|
|
- jsonObject.put("key", "1");
|
|
|
|
- jsonObject.put("name", "");
|
|
|
|
- objs.add(jsonObject);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- String checkbox = "<hc-form-checkbox-group @keydown.shift.up='keyupShiftUp' @keydown.shift.down='keyupShiftDown' @keydown.shift.left='keyupShiftLeft' @keydown.shift.right='keyupShiftRight' :objs='" + objs + "' @change='checkboxGroupChange' @contextmenu.prevent.native='contextmenuClick(" + parm + ")' @mouseup.right='RightClick(" + parm + ")' trIndex=" + i + " tdIndex=" + j + " x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " placeholder=''> </hc-form-checkbox-group>";
|
|
|
|
- data.empty().append(checkbox);
|
|
|
|
- } else {
|
|
|
|
- if (index_state) { // 区域内
|
|
|
|
- if (rowspan >= 1) {
|
|
|
|
- data.empty().append("<el-input type='textarea' @keydown.shift.up='keyupShiftUp' @keydown.shift.down='keyupShiftDown' @keydown.shift.left='keyupShiftLeft' @keydown.shift.right='keyupShiftRight' @contextmenu.prevent.native='contextmenuClick(" + parm + ")' @mouseup.right='RightClick(" + parm + ")' trIndex=" + i + " tdIndex=" + j + " x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%;' :rows=" + rowspan * 2 + " placeholder=''> </el-input>");
|
|
|
|
- } else {
|
|
|
|
- data.empty().append("<el-input type='text' @keydown.shift.up='keyupShiftUp' @keydown.shift.down='keyupShiftDown' @keydown.shift.left='keyupShiftLeft' @keydown.shift.right='keyupShiftRight' @contextmenu.prevent.native='contextmenuClick(" + parm + ")' @mouseup.right='RightClick(" + parm + ")' trIndex=" + i + " tdIndex=" + j + " x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%;' placeholder=''> </el-input>");
|
|
|
|
- }
|
|
|
|
- } else { // 区域外
|
|
|
|
- if (j == 0) {
|
|
|
|
- if (colspan == maxCol && i >= 1) {
|
|
|
|
- if (rowspan >= 1) {
|
|
|
|
- data.empty().append("<el-input @keydown.shift.up='keyupShiftUp' @keydown.shift.down='keyupShiftDown' @keydown.shift.left='keyupShiftLeft' @keydown.shift.right='keyupShiftRight' type='textarea' @contextmenu.prevent.native='contextmenuClick(" + parm + ")' @mouseup.right='RightClick(" + parm + ")' trIndex=" + i + " tdIndex=" + j + " x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%;' :rows=" + rowspan * 2 + " placeholder=''> </el-input>");
|
|
|
|
- } else {
|
|
|
|
- data.empty().append("<el-input @keydown.shift.up='keyupShiftUp' @keydown.shift.down='keyupShiftDown' @keydown.shift.left='keyupShiftLeft' @keydown.shift.right='keyupShiftRight' type='text' @contextmenu.prevent.native='contextmenuClick(" + parm + ")' @mouseup.right='RightClick(" + parm + ")' trIndex=" + i + " tdIndex=" + j + " x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%;' placeholder=''> </el-input>");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- Element bforData = tds.get(j - 1);
|
|
|
|
- if (!bforData.text().isEmpty() || bforData.html().indexOf("hc-form-checkbox-group") >= 0) {
|
|
|
|
- if (rowspan >= 1) {
|
|
|
|
- data.empty().append("<el-input @keydown.shift.up='keyupShiftUp' @keydown.shift.down='keyupShiftDown' @keydown.shift.left='keyupShiftLeft' @keydown.shift.right='keyupShiftRight' type='textarea' @contextmenu.prevent.native='contextmenuClick(" + parm + ")' @mouseup.right='RightClick(" + parm + ")' trIndex=" + i + " tdIndex=" + j + " x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%;' :rows=" + rowspan * 2 + " placeholder=''> </el-input>");
|
|
|
|
- } else {
|
|
|
|
- data.empty().append("<el-input @keydown.shift.up='keyupShiftUp' @keydown.shift.down='keyupShiftDown' @keydown.shift.left='keyupShiftLeft' @keydown.shift.right='keyupShiftRight' type='text' @contextmenu.prevent.native='contextmenuClick(" + parm + ")' @mouseup.right='RightClick(" + parm + ")' trIndex=" + i + " tdIndex=" + j + " x1=" + x1 + " x2=" + x2 + " y1=" + y1 + " y2=" + y2 + " style='width:100%;height:100%;' placeholder=''> </el-input>");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (!inputText.equals("")) {
|
|
|
|
- exctabCell.setExctabId(excelId);
|
|
|
|
- exctabCell.setTextInfo(inputText);
|
|
|
|
- if (inputText.contains("日期") || inputText.contains("年") || inputText.contains("月") || inputText.contains("日")) {
|
|
|
|
- //日期
|
|
|
|
- exctabCell.setTextElementType(4);
|
|
|
|
- } else if (inputText.indexOf("签字") >= 0) {
|
|
|
|
- exctabCell.setTextElementType(6);
|
|
|
|
- } else {
|
|
|
|
- //字符串
|
|
|
|
- exctabCell.setTextElementType(1);
|
|
|
|
- }
|
|
|
|
- exctabCell.setIsDeleted(0);
|
|
|
|
- exctabCell.setXys(i + "_" + j);
|
|
|
|
- colTitle.add(exctabCell);
|
|
|
|
- }
|
|
|
|
- data.attr("title", inputText);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 去掉重复的数
|
|
|
|
- Map<String, String> groupMap2 = colTitle.stream()
|
|
|
|
- .collect(Collectors.groupingBy(ExctabCell::getTextInfo, Collectors.mapping(ExctabCell::getXys, Collectors.joining(","))));
|
|
|
|
- exctabCellService.DeletExcelByTableId(excelId + "");
|
|
|
|
-
|
|
|
|
- List<ExctabCell> colTitle2 = new ArrayList<>();
|
|
|
|
- for (String title : groupMap2.keySet()) {
|
|
|
|
- ExctabCell exctabCell = new ExctabCell();
|
|
|
|
- exctabCell.setExctabId(excelId);
|
|
|
|
- exctabCell.setIsDeleted(0);
|
|
|
|
- exctabCell.setTextInfo(title);
|
|
|
|
- exctabCell.setCreateTime(new Date());
|
|
|
|
-
|
|
|
|
- if (title.contains("日期") || title.contains("年") || title.contains("月") || title.contains("日")) {
|
|
|
|
- //日期
|
|
|
|
- exctabCell.setTextElementType(4);
|
|
|
|
- } else {
|
|
|
|
- //字符串
|
|
|
|
- exctabCell.setTextElementType(1);
|
|
|
|
- }
|
|
|
|
- exctabCell.setXys(groupMap2.get(title));
|
|
|
|
- colTitle2.add(exctabCell);
|
|
|
|
- }
|
|
|
|
- exctabCellService.saveBatch(colTitle2);
|
|
|
|
-
|
|
|
|
- //对excel 的图片进行操作
|
|
|
|
- ExcelTab exceltab = excelTabService.getById(excelId);
|
|
|
|
- if (exceltab != null) {
|
|
|
|
- // 获取excle 的数据
|
|
|
|
- String fileUrl = exceltab.getFileUrl();
|
|
|
|
- InputStream ossInputStream = CommonUtil.getOSSInputStream(fileUrl);
|
|
|
|
- Workbook wb = new Workbook();
|
|
|
|
- wb.loadFromMHtml(ossInputStream);
|
|
|
|
- Worksheet sheet = wb.getWorksheets().get(0);
|
|
|
|
- PicturesCollection pictures = sheet.getPictures();
|
|
|
|
- if (pictures != null && pictures.size() >= 1) {
|
|
|
|
- for (int i = 0; i < pictures.size(); i++) {
|
|
|
|
- ExcelPicture pic = pictures.get(i);
|
|
|
|
- int x = pic.getLeftColumn();
|
|
|
|
- int y = pic.getBottomRow();
|
|
|
|
- Elements select = doc.select("el-input[x1=" + x + "][y1=" + y + "]");
|
|
|
|
-
|
|
|
|
- if (select != null && select.size() >= 1) {
|
|
|
|
- Element element = select.get(0);
|
|
|
|
- Element elementP = element.parent();
|
|
|
|
- element.remove();
|
|
|
|
- Element imgele = imgs.get(i);
|
|
|
|
- imgele.removeAttr("class");
|
|
|
|
- elementP.append(imgele.toString());
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- ossInputStream.close();
|
|
|
|
- }
|
|
|
|
- // 移除图片
|
|
|
|
- imgs.remove();
|
|
|
|
- // 保存
|
|
|
|
- File writefile = new File(thmlUrl);
|
|
|
|
- FileUtil.writeToFile(writefile, doc.html(), Boolean.parseBoolean("UTF-8"));
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
// 上传解析 html
|
|
// 上传解析 html
|
|
public void expailHtmlInfo(String thmlUrl, Long excelId) throws Exception {
|
|
public void expailHtmlInfo(String thmlUrl, Long excelId) throws Exception {
|
|
|
|
|
|
@@ -1699,6 +1442,8 @@ public class ExcelTabController extends BladeController {
|
|
// 移除图片
|
|
// 移除图片
|
|
imgs.remove();
|
|
imgs.remove();
|
|
// 保存
|
|
// 保存
|
|
|
|
+ exceltab.setIsDeleted(8);
|
|
|
|
+ excelTabService.saveOrUpdate(exceltab);
|
|
File writefile = new File(thmlUrl);
|
|
File writefile = new File(thmlUrl);
|
|
FileUtil.writeToFile(writefile, doc.html(), Boolean.parseBoolean("UTF-8"));
|
|
FileUtil.writeToFile(writefile, doc.html(), Boolean.parseBoolean("UTF-8"));
|
|
}
|
|
}
|