浏览代码

表单操作

hongchuangyanfa 3 年之前
父节点
当前提交
b14ae4527e
共有 13 个文件被更改,包括 226 次插入245 次删除
  1. 6 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsTreeContract.java
  2. 10 4
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/TextdictDataInfoVO.java
  3. 39 232
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java
  4. 58 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/LinkdataInfoController.java
  5. 89 4
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/TextdictInfoController.java
  6. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.java
  7. 4 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml
  8. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml
  9. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/ITextdictInfoService.java
  10. 4 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeContractService.java
  11. 2 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java
  12. 5 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java
  13. 4 2
      blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.xml

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

@@ -183,5 +183,11 @@ public class WbsTreeContract extends BaseEntity {
     @ApiModelProperty(value = "清表Id")
     private Long excelId;
 
+    /**
+     * html路径
+     */
+    @ApiModelProperty(value = "html路径")
+    private String htmlUrl;
+
 
 }

+ 10 - 4
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/TextdictDataInfoVO.java

@@ -35,15 +35,21 @@ public class TextdictDataInfoVO implements Serializable  {
 	private static final long serialVersionUID = 1L;
 
 
-	@ApiModelProperty(value = "节点Id")
-	private Long nodeId;
+	@ApiModelProperty(value = "tr")
+	private Integer trIndex;
 
-	@ApiModelProperty(value = "字段Id")
-	private Long colId;
+	@ApiModelProperty(value = "td")
+	private Integer tdIndex;
 
 	@ApiModelProperty(value = "文本类型Id")
 	private String textId;
 
+	@ApiModelProperty(value = "表Id")
+	private Long tableId;
+
+	@ApiModelProperty(value = "操作类型")
+	private Integer type;
+
 
 	@ApiModelProperty(value = "字段Id")
 	private List<TextdictInfo> textInfo;

+ 39 - 232
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -18,6 +18,7 @@ package org.springblade.manager.controller;
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.spire.xls.Workbook;
 import com.spire.xls.Worksheet;
 import io.swagger.annotations.*;
@@ -45,6 +46,7 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.constant.BladeConstant;
 import org.springblade.core.tool.utils.*;
 import org.springblade.manager.entity.*;
+import org.springblade.manager.mapper.WbsTreePrivateMapper;
 import org.springblade.manager.service.*;
 import org.springblade.manager.vo.*;
 import org.springblade.manager.wrapper.ExcelTabWrapper;
@@ -77,7 +79,7 @@ public class ExcelTabController extends BladeController {
 	// wes 基本信息表
 	private final IWbsTreeService wbsTreeService;
 	// excel 解析结构
-	private final IExctabCellService exctabCellService;
+	//private final IExctabCellService exctabCellService;
 
 	private final IOSSClient iossClient;
 
@@ -85,11 +87,16 @@ public class ExcelTabController extends BladeController {
 	private final IWbsTreePrivateService wbsTreePrivateService;
 
 	// 清表表格解析信息
-	private final ILinkdataInfoService linkdataInfoService;
+	//private final ILinkdataInfoService linkdataInfoService;
 
 	// 元素信息表-
 	private final IWbsFormElementService wbsFormElementService;
 
+	// 元素信息表-
+	private final IWbsTreeContractService wbsTreeContractService;
+
+	private final WbsTreePrivateMapper wbsTreePrivateMapper;
+
 	/**
 	 * 详情
 	 */
@@ -339,11 +346,6 @@ public class ExcelTabController extends BladeController {
 				String[] pk_id = info.getLinkIds().split(",");
 				for(String pkInfo : pk_id){
 
-					/*wbsTree.setPKeyId(Long.parseLong(pkInfo));
-					WbsTreePrivate aPrivate = wbsTreePrivateService.getOne(Condition.getQueryWrapper(wbsTree));
-					aPrivate.setExcelId(excelTab.getId());
-					aPrivate.setIsLinkTable(2);*/
-
 					UpdateWrapper<WbsTreePrivate> updateWrapper = new UpdateWrapper<>();
 					updateWrapper.in("p_key_id",Long.parseLong(pkInfo));
 					updateWrapper.set("is_link_table",2);
@@ -402,6 +404,9 @@ public class ExcelTabController extends BladeController {
 		FileUtil.copy(file_in,file_out);
 		updateWrapper.set("html_url",thmlUrl);
 		wbsTreePrivateService.update(updateWrapper);
+		//关联项目下所有的合同段
+		wbsTreeContractService.updateAllNodeTabById(aPrivate);
+
 
 		// 匹配关联
 		File file1 = ResourceUtil.getFile(thmlUrl);
@@ -420,7 +425,7 @@ public class ExcelTabController extends BladeController {
 			Elements tds = tr.select("td");
 			for(int j=0; j<tds.size();j++){
 				Element element = tds.get(j);
-				if(element.html().indexOf("el-input")>=0 ||element.html().indexOf("el-date-picker")>=0){
+				if(element.html().indexOf("el-input")>=0){
 					String titleName = element.attr("title");
 					double maxScore = 0.6;
 					String lastName = "";
@@ -436,15 +441,18 @@ public class ExcelTabController extends BladeController {
 							if(MathUtil.sim(titleName,ysName) > maxScore){
 								attrInfo = elementInfo.getEKey()+"="+i+"_"+j;
 								lastName = ysName ;
+								maxScore = MathUtil.sim(titleName,ysName);
 							}
 						}
 					}
-					System.out.println(titleName +"——"+lastName);
-					element.children().get(0).attr("placeholder",lastName).attr("v-model","formData."+attrInfo).attr("keyName",attrInfo);
+					String oncklickText = "'"+lastName +"',"+i+","+j;
+					element.children().get(0).attr("placeholder",lastName).attr("@focus","getInformation("+oncklickText+")").attr("keyName",attrInfo).attr("weighing",maxScore+"");//.attr("v-model","formData."+attrInfo);
 				}
 			}
 		}
 
+		File writefile = new File(thmlUrl);
+		FileUtil.writeToFile(writefile, doc.html(), Boolean.parseBoolean("UTF-8"));
 		return R.success("关联成功");
 	}
 
@@ -456,28 +464,34 @@ public class ExcelTabController extends BladeController {
 	@ApiOperationSupport(order = 16)
 	@ApiOperation(value = "清表生成html", notes = "清表生成html")
 	@ApiImplicitParams(value = {
-			@ApiImplicitParam(name = "excelId", value = "excelId", required = true)
+			@ApiImplicitParam(name = "pkeyId", value = "pkeyId", required = true)
 	})
-	public R getExcelHtmlByBuss(Long excelId) throws IOException {
-		ExcelTab excelTab = excelTabService.getById(excelId);
-		if(excelTab ==null ){
+	public R getExcelHtmlByBuss(Long pkeyId) throws IOException {
+
+		WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
+				.eq(WbsTreeContract::getPKeyId, pkeyId));
+		if(wbsTreeContract ==null ){
 			return R.fail("该数据下无此节点!");
 		}
-		if(excelTab.getHtmlUrl()==null){
+		if(wbsTreeContract.getHtmlUrl()==null){
 			return R.fail("请上传清表!");
 		}
-
-		File file1 = ResourceUtil.getFile(excelTab.getHtmlUrl());
+		File file1 = ResourceUtil.getFile(wbsTreeContract.getHtmlUrl());
 		FileInputStream fileInputStream = new FileInputStream(file1);
-		String htmlString =   IoUtil.readToString(fileInputStream);
+		String htmlString =  IoUtil.readToString(fileInputStream);
 		// 解析 style
 		Document doc = Jsoup.parse(htmlString);
 		Element table = doc.select("table").first();
+
+
+
 		doc.select("Col").remove();
 		fileInputStream.close();
 		return R.data(table+"");
 	}
 
+
+
 	/**
 	 * 清表生成html
 	 */
@@ -485,19 +499,20 @@ public class ExcelTabController extends BladeController {
 	@ApiOperationSupport(order = 15)
 	@ApiOperation(value = "清表生成html", notes = "清表生成html")
 	@ApiImplicitParams(value = {
-			@ApiImplicitParam(name = "excelId", value = "excelId", required = true)
+			@ApiImplicitParam(name = "pkeyId", value = "pkeyId", required = true)
 	})
-	public R getExcelHtml(Long excelId) throws IOException {
-		ExcelTab excelTab = excelTabService.getById(excelId);
+	public R getExcelHtml(Long pkeyId) throws IOException {
 
-		if(excelTab ==null ){
+		WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.getByPKeyId(pkeyId);
+
+		if(wbsTreePrivate ==null ){
 			return R.fail("该数据下无此节点!");
 		}
-		if(excelTab.getHtmlUrl()==null){
+		if(wbsTreePrivate.getHtmlUrl()==null){
 			return R.fail("请上传清表!");
 		}
 
-		File file1 = ResourceUtil.getFile(excelTab.getHtmlUrl());
+		File file1 = ResourceUtil.getFile(wbsTreePrivate.getHtmlUrl());
 		FileInputStream fileInputStream = new FileInputStream(file1);
 		String htmlString =   IoUtil.readToString(fileInputStream);
 		// 解析 style
@@ -508,215 +523,7 @@ public class ExcelTabController extends BladeController {
 		return R.data(table+"");
 	}
 
-	public static void explianHtml1111(String htmlURl) throws IOException {
-
-		File file1 = ResourceUtil.getFile(htmlURl);
-		FileInputStream inputStream = new FileInputStream(file1);
-
-		// 测试
-		String htmlString =  IoUtil.readToString(inputStream);
-
-		// 样式集合
-		Map<String ,String > styleMap = new HashMap<>();
-		// 解析 style
-		Document doc = Jsoup.parse(htmlString);
-		Element style = doc.select("style").first();
-
-		Matcher cssMatcher = Pattern.compile("(\\w+)\\s*[{]([^}]+)[}]").matcher(style.html());
-		while (cssMatcher.find()) {
-			styleMap.put(cssMatcher.group(1),cssMatcher.group(2));
-		}
-		// 解析 总行和总列
-		Element table = doc.select("table").first();
-		Elements trs = table.select("tr");
-
-		// 获取总行列数
-		int maxCol = doc.select("Col").size();
-		String [] rowData = new String[trs.size()+1];
-
-		int s_index = 0;
-		boolean index_stat = false;
-		int xy_type = 1  ;
-		// 横向计算
-		for(int i = 0 ;i < trs.size() ;i++) {
-			Element tr = trs.get(i);
-			Elements tds = tr.select("td");
-
-			int x_width = 0 ;
-			int y_width = 0 ;
-			int text_width = 0;
-			//区域计算
-			for (int j = 0; j < tds.size(); j++) {
-				Element data = tds.get(j);
-				String keyId = data.attr("class");
-
-				int colspan = data.attr("COLSPAN").equals("") ? 1 : Integer.parseInt(data.attr("COLSPAN"));
-				String classInfo = styleMap.get(keyId);
-				data.removeAttr("class");
-				data.attr("style",styleMap.get(keyId).replaceAll("break-word","inherit"));
-				// 第一列
-
-				// 计算线开始
-				if(classInfo.indexOf("border-left-style")>=0 && classInfo.indexOf("border-top-style")>=0 && classInfo.indexOf("border-bottom-style")>=0 && classInfo.indexOf("border-right-style")>=0){
-					x_width += colspan;
-				}
-
-				// 计算结束
-				if(classInfo.indexOf("border-left-style")< 0 &&  classInfo.indexOf("border-bottom-style")<0 && classInfo.indexOf("border-right-style")<0){
-					y_width += colspan;
-				}
-
-				String name = data.text().replaceAll("[^\u4E00-\u9FA5]", "");
-				if(!name.isEmpty()){
-					text_width += colspan;
-				}
-			}
-
-			if(index_stat){
-				//是否需要改变
-				if(maxCol == y_width ){
-					index_stat =  false ;
-					xy_type+=1;
-				}
-				if(maxCol == text_width){
-					xy_type+=1;
-				}
-			}else{ // 区域外
-				if(maxCol == x_width ){
-					index_stat =  true ;
-					xy_type+=1;
-				}
-			}
-			tr.attr("indexStat",index_stat+"");
-
-			int x= 0;
-			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"));
-
-				Map<String, String> textObject = new HashMap<>();
-				// 计算
-				int x1 =0;
-				int x2 =0;
-				int y1 =0;
-				int y2 =0;
-				//x
-				// X 坐标
-				if(colspan==0){
-					x1 = x+1;
-					x2 = x+1;
-					x= x +1;
-				}else{
-					x1 = x+1;
-					x2 = x+colspan;
-					x = x+colspan;
-				}
-				String textInfo = data.text().trim();
-
-				// y 坐标
-				y1=i+1;
-				if(rowspan==0){
-					y2 = i+1;
-				}else{
-					y2 = i+rowspan;
-					for(int k=0;k<rowspan-1;k++){
-						String dataInfo = rowData[k+2+i];
-						if(dataInfo==null){
-							dataInfo = x1+":"+x2;
-						}else{
-							String [] dataInfo2 = dataInfo.split(",");
-							String dataInfo3 = dataInfo2[dataInfo2.length-1];
-							int mx1 = Integer.parseInt(dataInfo3.split(":")[0]);
-							int mx2 = Integer.parseInt(dataInfo3.split(":")[1]);
-							if(mx2+1==x1){
-								dataInfo = dataInfo+","+mx1+":"+x2;
-							}else{
-								dataInfo = dataInfo+","+x1+":"+x2;
-							}
-						}
-						rowData[k+2+i] = dataInfo;
-					}
-				}
-
-				String getRowInfo = rowData[y1];
-				if(getRowInfo!=null){
-					String [] dataInfo2 = getRowInfo.split(",");
-					if(getRowInfo.indexOf("1")>=0 && j==0){
-						for(int m =0;m<dataInfo2.length ;m++){
-							int mx1 = Integer.parseInt(dataInfo2[m].split(":")[0]);
-							int mx2 = Integer.parseInt(dataInfo2[m].split(":")[1]);
-							x = mx2;
-						}
-						x1 = x+x1;
-						x2 = x+x2;
-						x = x+1 ; //计算自己
-					}else{
-						for(int m =0;m<dataInfo2.length ;m++){
-							int mx1 = Integer.parseInt(dataInfo2[m].split(":")[0]);
-							int mx2 = Integer.parseInt(dataInfo2[m].split(":")[1]);
-							if(x2+1 == mx1){
-								x = mx2 ;
-							}
-						}
-					}
-				}
-
-				System.out.println(StringUtil.trimAllWhitespace(textInfo)+""+StringUtil.trimAllWhitespace(textInfo).length());
-				data.text(textInfo.replaceAll(" ",""));
-
-				// 设置td 属性
-				data.attr("trIndex",i+"");
-				data.attr("tdIndex",j+"");
-				data.attr("x1",x1+"");
-				data.attr("x2",x2+"");
-				data.attr("y1",y1+"");
-				data.attr("y2",y2+"");
-				data.attr("xytype",xy_type+"");
-				String parm = i+","+j+","+x1+","+x2+","+y1+","+y2+",$event";
-				// 设置文本信息
-				if(textInfo.indexOf("年")>=0 && textInfo.indexOf("月")>=0&& textInfo.indexOf("日")>=0){
-					data.empty().append("<el-date-picker  style='width:100%;height:100%' trIndex="+i+" tdIndex="+j+"  x1="+x1+" x2="+x2+" y1="+y1+" y2="+y2+"  type='date' format='YYYY年MM月DD日' placeholder='请选择时间'> </el-date-picker>");
-				}
-
-				if(textInfo.isEmpty() || textInfo.equals("/") || textInfo.equals("-")){
-					if(index_stat){
-						if(rowspan>=1){
-							data.empty().append("<el-input type='textarea'  @contextmenu.prevent.native='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'  @contextmenu.prevent.native='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 && i<=2){
-								if(rowspan>=1){
-									data.empty().append("<el-input type='textarea'  @contextmenu.prevent.native='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' @contextmenu.prevent.native='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()){
-								if(rowspan>=1){
-									data.empty().append("<el-input type='textarea' @contextmenu.prevent.native='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' @contextmenu.prevent.native='RightClick("+parm+")' trIndex="+i+" tdIndex="+j+"  x1="+x1+" x2="+x2+" y1="+y1+" y2="+y2+" style='width:100%;height:100%' placeholder=''> </el-input>");
-								}
-							}
-						}
-					}
-				}
-			}
-		}
-
-		// 写入
 
-		FileUtil.writeToFile(file1, doc.html(), Boolean.parseBoolean("UTF-8"));
-		inputStream.close();
-		System.out.println("完成");
-	}
 
 	/**
 	 *保存用户填报数据接口

+ 58 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/LinkdataInfoController.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.manager.controller;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -23,11 +24,23 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
 import javax.validation.Valid;
 
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+import org.jsoup.select.Elements;
 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.WbsFormElement;
+import org.springblade.manager.entity.WbsTreeContract;
+import org.springblade.manager.entity.WbsTreePrivate;
+import org.springblade.manager.mapper.WbsTreePrivateMapper;
 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;
@@ -36,6 +49,11 @@ import org.springblade.manager.vo.LinkdataInfoVO;
 import org.springblade.manager.service.ILinkdataInfoService;
 import org.springblade.core.boot.ctrl.BladeController;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.util.Map;
+
 /**
  * 清表解析字段信息 控制器
  *
@@ -51,6 +69,8 @@ public class LinkdataInfoController extends BladeController {
 	private final ILinkdataInfoService linkdataInfoService;
 
 	private final IWbsFormElementService wbsFormElementService;
+
+	private final WbsTreePrivateMapper wbsTreePrivateMapper;
 	/**
 	 * 详情
 	 */
@@ -150,4 +170,42 @@ public class LinkdataInfoController extends BladeController {
 		return R.data(wbsFormElementService.selectElementListByFid(tabId));
 	}
 
+
+	/**
+	 * 编辑表单-替换元素||删除文本信息 保存
+	 */
+	@PostMapping("/saveTabColInfo")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "编辑表单-替换元素||删除文本信息 保存", notes = "传入linkdataInfo")
+	public R saveTabColInfo(@Valid @RequestBody LinkdataInfo linkdataInfo) throws FileNotFoundException {
+
+
+		// 获取 节点信息
+		WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.getByPKeyId(linkdataInfo.getTabId());
+
+		// 读取html页面信息
+		File file1 = ResourceUtil.getFile(wbsTreePrivate.getHtmlUrl());
+		String htmlString =  IoUtil.readToString(new FileInputStream(file1));
+		// 样式集合
+		Document doc = Jsoup.parse(htmlString);
+
+		//解析
+		Element table = doc.select("table").first();
+		Elements trs = table.select("tr");
+		Element element = trs.get(linkdataInfo.getTrIndex()).select("td").get(linkdataInfo.getTdIndex());
+		if(linkdataInfo.getColName().equals("/")){
+			element.empty();
+		}else{
+			// 获取元素基本信息
+			WbsFormElement wbsFormElement = wbsFormElementService.getById(linkdataInfo.getId());
+			element.children().get(0).attr("placeholder",wbsFormElement.getEName()).attr("keyName",wbsFormElement.getEKey()+"="+linkdataInfo.getTrIndex()+"_"+linkdataInfo.getTdIndex()).attr("weighing","100");//.attr("v-model","formData."+attrInfo);
+		}
+
+		File writefile = new File(wbsTreePrivate.getHtmlUrl());
+		FileUtil.writeToFile(writefile, doc.html(), Boolean.parseBoolean("UTF-8"));
+
+		return R.success("操作成功");
+	}
+
+
 }

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

@@ -23,10 +23,20 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
 import javax.validation.Valid;
 
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+import org.jsoup.select.Elements;
 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.WbsFormElement;
+import org.springblade.manager.entity.WbsTreePrivate;
+import org.springblade.manager.mapper.WbsTreePrivateMapper;
 import org.springblade.manager.vo.TextdictDataInfoVO;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -36,6 +46,11 @@ import org.springblade.manager.vo.TextdictInfoVO;
 import org.springblade.manager.service.ITextdictInfoService;
 import org.springblade.core.boot.ctrl.BladeController;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.util.List;
+
 /**
  * 参数信息表 控制器
  *
@@ -49,7 +64,7 @@ import org.springblade.core.boot.ctrl.BladeController;
 public class TextdictInfoController extends BladeController {
 
 	private final ITextdictInfoService textdictInfoService;
-
+	private final WbsTreePrivateMapper wbsTreePrivateMapper;
 	/**
 	 * 详情
 	 */
@@ -131,10 +146,80 @@ public class TextdictInfoController extends BladeController {
 	@PostMapping("/saveTextInfo")
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "新增或修改", notes = "传入textdictInfo")
-	public R saveTextInfo(@Valid @RequestBody TextdictDataInfoVO textdictInfo) {
-		//
+	public R saveTextInfo(@Valid @RequestBody TextdictDataInfoVO textdictInfo) throws FileNotFoundException {
+
+		// 获取 节点信息
+		WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.getByPKeyId(textdictInfo.getTableId());
+
+		// 读取html页面信息
+		File file1 = ResourceUtil.getFile(wbsTreePrivate.getHtmlUrl());
+		String htmlString =  IoUtil.readToString(new FileInputStream(file1));
+		// 样式集合
+		Document doc = Jsoup.parse(htmlString);
+
+		//解析
+		Element table = doc.select("table").first();
+		Elements trs = table.select("tr");
+		Element element = trs.get(textdictInfo.getTrIndex()).select("td").get(textdictInfo.getTdIndex());
+
+		String trindex = element.children().get(0).attr("trindex");
+		String tdindex = element.children().get(0).attr("tdindex");
+		String x1 = element.children().get(0).attr("x1");
+		String x2 = element.children().get(0).attr("x2");
+		String y1 = element.children().get(0).attr("y1");
+		String y2 = element.children().get(0).attr("y2");
+		String placeholder = element.children().get(0).attr("placeholder");
+		String keyname = element.children().get(0).attr("keyname");
+		String weighing = element.children().get(0).attr("weighing");
+
+		String parm = trindex+","+tdindex+","+x1+","+x2+","+y1+","+y2+",$event";
+		String oncklickText = "'"+keyname +"',"+trindex+","+tdindex;
+
+		if(textdictInfo.getTextId().equals("input")){ // 单选框
+			element.empty().append("<el-input type='text' @focus='getInformation("+oncklickText+")' 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-input>");
+		}else if(textdictInfo.getTextId().equals("textarea")){ // 文本域
+			int rowspan = Integer.parseInt(element.attr("rowspan")+"")*2;
+			element.empty().append("<el-input :rows="+rowspan+" type='textarea' @focus='getInformation("+oncklickText+")' 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-input>");
+		}else if(textdictInfo.getTextId().equals("select")){ // 下拉框
+			String selectText = " <el-select v-model="+keyname+" placeholder='请选择'>";
+			List<TextdictInfo> optionList = textdictInfo.getTextInfo();
+			if(optionList!=null && optionList.size()>=1){
+				for (int i= 0 ; i<optionList.size();i++)
+				selectText +="<el-option  :key='"+i+"' :label='"+optionList.get(i).getDictValue()+"'   :value='"+i+"' > </el-option>";
+			}
+			selectText += "</el-select>";
+			element.empty().append(selectText);
+		}else if(textdictInfo.getTextId().equals("radio")){ // 单选按钮
+
+			String radioText = "<template>";
+			List<TextdictInfo> optionList = textdictInfo.getTextInfo();
+			if(optionList!=null && optionList.size()>=1){
+				for (int i= 0 ; i<optionList.size();i++)
+					radioText +=" <el-radio v-model="+keyname+" label="+i+">"+optionList.get(i).getDictValue()+"</el-radio>";
+			}
+			radioText += "</template>";
+			element.empty().append(radioText);
+		}else if(textdictInfo.getTextId().equals("checkbox")){ // 多选框
+			String checkbox = " <el-checkbox-group v-model="+keyname+" placeholder='请选择'>";
+			List<TextdictInfo> optionList = textdictInfo.getTextInfo();
+			if(optionList!=null && optionList.size()>=1){
+				for (int i= 0 ; i<optionList.size();i++)
+					checkbox +="<el-checkbox label="+optionList.get(i).getDictValue()+"></el-checkbox>";
+			}
+			checkbox += "</el-checkbox-group>";
+			element.empty().append(checkbox);
+		}else if(textdictInfo.getTextId().equals("date")){ // 日期
+			element.empty().append("<el-date-picker type='date' format='YYYY年MM月DD日' @focus='getInformation("+oncklickText+")' 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>");
+		}else if(textdictInfo.getTextId().equals("daterange")){ // 时间段
+
+			element.empty().append("<el-date-picker v-model="+keyname+"_group1"+" type='date' format='YYYY年MM月DD日'></el-date-picker> 至 <el-date-picker type='date' format='YYYY年MM月DD日' v-model="+keyname+"_group2"+"></el-date-picker>");
+		}
+
+		File writefile = new File(wbsTreePrivate.getHtmlUrl());
+		FileUtil.writeToFile(writefile, doc.html(), Boolean.parseBoolean("UTF-8"));
+
+		return R.success("操作成功");
 
-		return R.status(textdictInfoService.saveBatch(textdictInfo.getTextInfo()));
 	}
 
 }

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

@@ -70,4 +70,6 @@ public interface WbsTreeContractMapper extends BaseMapper<WbsTreeContract> {
 
 
     List<WbsTreeContract> searchParentAllNode(long primaryKeyId, Long contractId);
+
+    List<WbsTreeContract> updateAllNodeTabById(@Param("aPrivate") WbsTreePrivate aPrivate);
 }

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

@@ -428,4 +428,8 @@
         ) T1 JOIN m_wbs_tree_contract T2  ON T1._id = T2.id where T2.contract_id=#{contractId}
     </select>
 
+    <select id="updateAllNodeTabById" resultType="org.springblade.manager.entity.WbsTreeContract">
+        update m_wbs_tree_contract set excel_id=#{aPrivate.excelId} ,is_link_table=2 , html_url=#{aPrivate.htmlUrl} where type =2 and project_id = #{aPrivate.projectId} and id =#{aPrivate.id};
+    </select>
+
 </mapper>

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

@@ -342,7 +342,7 @@
         SELECT
              p_key_id,id,wbs_id,wbs_type,project_id,tenant_id,parent_id,ancestors,dept_category,dept_name,full_name,sort,remark,type,
                table_type,create_time,create_user, create_dept,update_user,update_time,status,is_deleted,unique_code,partition_code,is_expernode,
-               is_concrete,table_owner,major_data_type,init_table_name,is_link_table,excel_id,is_exist_form
+               is_concrete,table_owner,major_data_type,init_table_name,is_link_table,excel_id,is_exist_form,html_url
         FROM m_wbs_tree_private
         WHERE p_key_id = #{pKeyId}
     </select>

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/ITextdictInfoService.java

@@ -41,4 +41,6 @@ public interface ITextdictInfoService extends IService<TextdictInfo> {
 	 */
 	IPage<TextdictInfoVO> selectTextdictInfoPage(IPage<TextdictInfoVO> page, TextdictInfoVO textdictInfo);
 
+
+
 }

+ 4 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeContractService.java

@@ -4,6 +4,7 @@ import org.springblade.core.mp.base.BaseService;
 import org.springblade.manager.dto.WbsTreeContractDTO;
 import org.springblade.manager.entity.WbsTree;
 import org.springblade.manager.entity.WbsTreeContract;
+import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.vo.WbsTreeContractTreeVO;
 import org.springblade.manager.vo.WbsTreeContractTreeVO2;
 import org.springblade.manager.vo.WbsTreeContractVO2;
@@ -25,4 +26,7 @@ public interface IWbsTreeContractService extends BaseService<WbsTreeContract> {
     List<WbsTreeContract> searchNodeAllTable(String primaryKeyId,String typeOwner);
 
     List<WbsTreeContract> searchParentAllNode(long primaryKeyId,Long contractId);
+
+
+    List<WbsTreeContract> updateAllNodeTabById(WbsTreePrivate aPrivate);
 }

+ 2 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -363,7 +363,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
            }
     }
 
-    public static void main(String[] args) {
+/*    public static void main(String[] args) {
         Set<Class<?>> classList =  ReflectionUtil.getClassSetBySuper(IFcHandler.class);
         List<IFcHandler> receiptHandlerList = new ArrayList<>();
         if (classList.size() > 0) {
@@ -376,7 +376,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             }
         }
         System.out.println();
-    }
+    }*/
 
 }
 

+ 5 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -322,4 +322,9 @@ public class WbsTreeContractServiceImpl
     public List<WbsTreeContract> searchParentAllNode(long primaryKeyId, Long contractId) {
         return baseMapper.searchParentAllNode(primaryKeyId, contractId);
     }
+
+    @Override
+    public List<WbsTreeContract> updateAllNodeTabById(WbsTreePrivate aPrivate) {
+        return baseMapper.updateAllNodeTabById(aPrivate);
+    }
 }

+ 4 - 2
blade-service/blade-system/src/main/java/org/springblade/system/mapper/MenuMapper.xml

@@ -244,7 +244,8 @@
         path,
         source,
         action,
-        sort
+        sort,
+        text_info
         FROM
         blade_menu
         WHERE
@@ -268,7 +269,8 @@
         path,
         source,
         action,
-        sort
+        sort,
+        text_info
         FROM
         blade_menu
         WHERE