springboot +layui实现1获取输入框值2显示table:请求后台读sch文本数据并回显给table3改变table值:请求传值写入opt文本中的功能

实现获取输入框控件参数,写入文本中,并读取数据返回给table控件。
0.后台opt文本 bean实体类,也可以叫模型或者数据库

public class OptModel {
private String cslj;
private String yhlj;
private String xmm;
private String cscys;
private String zdyhcs;
private String zqdx;
private String zsjs;
private String cyjs;
private String yhbs;
private String dbbc;
private String yhqsb;
private String ylys;
private String hsl;
private String bx;
private String jtdccy;
private String dtdcjd;
private String sxbs;
private String xxbs; 
 
private LinkedList<WellData>  wellmodel;
}
public class WellData {
private String wellname; 
private String type;
private String chanye;
private String up;
private String down;

1.控件
参数控件

<div class="layui-row">
    <div class="layui-col-sm3">
       <div class="grid-demo grid-demo-bg1"><div class="layui-form-item">
      <label class="layui-form-label"><span class="f_orange">*</span>初始采样数</label>
      <div class="layui-input-block width_250 pos-r">
        <input type="text" id="cscys" class="layui-input" name="ColumnCode" lay-verify="required|inputLength_100" placeholder="11" value="50" autocomplete="off">
        <i class="icon_ca_layui"></i>
      </div>
        </div>
        </div>
    </div>
    <div class="layui-col-sm3">
       <div class="grid-demo grid-demo-bg1"><div class="layui-form-item">
      <label class="layui-form-label"><span class="f_orange">*</span>最大优化次数</label>
      <div class="layui-input-block width_250 pos-r">
        <input type="text" id="zdyhcs" class="layui-input" name="ColumnCode" lay-verify="required|inputLength_100" placeholder="11" value="100" autocomplete="off">
        <i class="icon_ca_layui"></i>
      </div>
        </div>
        </div>
    </div>
    <div class="layui-col-sm3">
       <div class="grid-demo grid-demo-bg1"><div class="layui-form-item">
      <label class="layui-form-label"><span class="f_orange">*</span>种群大小</label>
      <div class="layui-input-block width_250 pos-r">
        <input type="text" id="zqdx" class="layui-input" name="ColumnCode" lay-verify="required|inputLength_100" placeholder="11" value="20" autocomplete="off">
        <i class="icon_ca_layui"></i>
      </div>
        </div>
        </div>
    </div>
    <div class="layui-col-sm3">
       <div class="grid-demo grid-demo-bg1"><div class="layui-form-item">
      <label class="layui-form-label"><span class="f_orange">*</span>注水井数</label>
      <div class="layui-input-block width_250 pos-r">
        <input type="text" id="zsjs" class="layui-input" name="ColumnCode" lay-verify="required|inputLength_100" placeholder="11" value="4" autocomplete="off">
        <i class="icon_ca_layui"></i>
      </div>
        </div>
        </div>
    </div>
  </div>
  
    <div class="layui-row">
    <div class="layui-col-sm3">
       <div class="grid-demo grid-demo-bg1"><div class="layui-form-item">
      <label class="layui-form-label"><span class="f_orange">*</span>采油井数</label>
      <div class="layui-input-block width_250 pos-r">
        <input type="text" id="cyjs" class="layui-input" name="ColumnCode" lay-verify="required|inputLength_100" placeholder="11" value="9" autocomplete="off">
        <i class="icon_ca_layui"></i>
      </div>
        </div>
        </div>
    </div>
    <div class="layui-col-sm3">
       <div class="grid-demo grid-demo-bg1"><div class="layui-form-item">
      <label class="layui-form-label"><span class="f_orange">*</span>优化步数</label>
      <div class="layui-input-block width_250 pos-r">
        <input type="text" id="yhbs" class="layui-input" name="ColumnCode" lay-verify="required|inputLength_100" placeholder="11" value="4" autocomplete="off">
        <i class="icon_ca_layui"></i>
      </div>
        </div>
        </div>
    </div>
    <div class="layui-col-sm3">
       <div class="grid-demo grid-demo-bg1"><div class="layui-form-item">
      <label class="layui-form-label"><span class="f_orange">*</span>单步步长</label>
      <div class="layui-input-block width_250 pos-r">
        <input type="text" id="dbbc" class="layui-input" name="ColumnCode" lay-verify="required|inputLength_100" placeholder="11" value="360" autocomplete="off">
        <i class="icon_ca_layui"></i>
      </div>
        </div>
        </div>
    </div>
    <div class="layui-col-sm3">
       <div class="grid-demo grid-demo-bg1"><div class="layui-form-item">
      <label class="layui-form-label"><span class="f_orange">*</span>优化起始步</label>
      <div class="layui-input-block width_250 pos-r">
        <input type="text" id="yhqsb" class="layui-input" name="ColumnCode" lay-verify="required|inputLength_100" placeholder="11" value="1" autocomplete="off">
        <i class="icon_ca_layui"></i>
      </div>
        </div>
        </div>
    </div>
  </div>
  
    <div class="layui-row">
    <div class="layui-col-sm3">
       <div class="grid-demo grid-demo-bg1"><div class="layui-form-item">
      <label class="layui-form-label"><span class="f_orange">*</span>压力约束</label>
      <div class="layui-input-block width_250 pos-r">
        <input type="text" id="ylys" class="layui-input" name="ColumnCode" lay-verify="required|inputLength_100" placeholder="11" value="140" autocomplete="off">
        <i class="icon_ca_layui"></i>
      </div>
        </div>
        </div>
    </div>
    <div class="layui-col-sm3">
       <div class="grid-demo grid-demo-bg1"><div class="layui-form-item">
      <label class="layui-form-label"><span class="f_orange">*</span>含水率约束</label>
      <div class="layui-input-block width_250 pos-r">
        <input type="text" id="hsl" class="layui-input" name="ColumnCode" lay-verify="required|inputLength_100" placeholder="11" value="0.9" autocomplete="off">
        <i class="icon_ca_layui"></i>
      </div>
        </div>
        </div>
    </div>
    <div class="layui-col-sm3">
       <div class="grid-demo grid-demo-bg1"><div class="layui-form-item">
      <label class="layui-form-label"><span class="f_orange">*</span>静态单次采样数</label>
      <div class="layui-input-block width_250 pos-r">
        <input type="text" id="jtdccy" class="layui-input" name="ColumnCode" lay-verify="required|inputLength_100" placeholder="11" value="5" autocomplete="off">
        <i class="icon_ca_layui"></i>
      </div>
        </div>
        </div>
    </div>
    <div class="layui-col-sm3">
       <div class="grid-demo grid-demo-bg1">
       <div class="layui-form-item">
      <label class="layui-form-label"><span class="f_orange">*</span>动态单次加点数</label>
      <div class="layui-input-block width_250 pos-r">
        <input type="text" id="dtdcjd" class="layui-input" name="ColumnCode" lay-verify="required|inputLength_100" placeholder="11" value="4" autocomplete="off">
        <i class="icon_ca_layui"></i>
      </div>
        </div>
        </div>
    </div>
  </div>
  
  
  
  <div class="layui-row">
   <div class="layui-col-sm3">
       <div class="grid-demo grid-demo-bg1">
       <div class="layui-form-item">
      <label class="layui-form-label"><span class="f_orange"  >*</span>注采上限倍数</label>
      <div class="layui-input-block width_250 pos-r">
        <input type="text" id="sxbs" class="layui-input" name="ColumnCode" lay-verify="required|inputLength_100" placeholder="" value="1.5" autocomplete="off">
        <i class="icon_ca_layui"></i>
      </div>
        </div>
        </div>
    </div>
    
     <div class="layui-col-sm3">
       <div class="grid-demo grid-demo-bg1">
       <div class="layui-form-item">
      <label class="layui-form-label"  ><span class="f_orange">*</span>注采下限倍数</label>
      <div class="layui-input-block width_250 pos-r">
        <input type="text" id="xxbs" class="layui-input" name="ColumnCode" lay-verify="required|inputLength_100" placeholder="" value="0.5" autocomplete="off">
        <i class="icon_ca_layui"></i>
      </div>
        </div>
        </div>
    </div>
    <div class="layui-col-sm3">
       <div class="grid-demo grid-demo-bg1"><div class="layui-form-item">
       <div class="layui-form-item">
    <label class="layui-form-label">是否并行</label>
    <div class="layui-input-block">
      <input id="bx" type="radio" name="sex" value="" title="是" checked="">
      <input id="bx2" type="radio" name="sex" value="" title="否">
       
    </div>
  </div>
        </div>
        </div>
    </div>
    
  </div>
   
</div>
   
</form>

 table显示按钮
  <div class="layui-form-item">
  <fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;">
  <legend style="color:red">SCH处理</legend>
</fieldset> 
    <div class="layui-input-block">
        &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
      <button class="layui-btn"   lay-filter="demo1" type="button" value="test"  onclick="cuculate()" >加载井生产数据</button>
     &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 
     <button class="layui-btn"   lay-filter="demo1" type="button" value="test"  onclick="change()" >确认修改</button>
    
    </div>
  </div>
  <div class="layui-form-item">

table 控件

<table class="layui-table" id="welltb" style='width:68%' lay-skin="line">
  <colgroup>
    <col width="150">
    <col width="150">
    <col width="150">
    <col  width="150">
    <col  width="150">
  </colgroup>
  <thead  >
    <tr >
      <th style='width:150px'>井名</th>
      <th style='width:150px'>井别</th>
      <th style='width:150px'>当前值</th>
      <th style='width:150px'>最小调控量</th>
      <th style='width:150px'>最大调控量</th>
    </tr> 
  </thead>
  <tbody >
    
  </tbody>
</table>   

生成文件按钮

 </div>
   <div class="layui-form-item">
  <fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;">
  <legend style="color:red">生成optpar.dat文件</legend>
</fieldset> 

2.js

输入框参数上传和获取table数据回显功能

function cuculate(){
	layui.use([ 'jquery' ], function() {
		var $ = layui.jquery;
		//赋值
		opts.cscys=$("#cscys").val() ;
		opts.zdyhcs=$("#zdyhcs").val() ;
		opts.zqdx=$("#zqdx").val() ;
		opts.zsjs=$("#zsjs").val() ;
		opts.cyjs=$("#cyjs").val() ;
		opts.yhbs=$("#yhbs").val() ;
		opts.dbbc=$("#dbbc").val() ;
		opts.yhqsb=$("#yhqsb").val() ;
		opts.ylys=$("#ylys").val() ;
		opts.hsl=$("#hsl").val() ;
		if($("#bx")[0].checked==true){opts.bx="1"}
		else opts.bx="0";
		opts.jtdccy=$("#jtdccy").val() ;
		opts.dtdcjd=$("#dtdcjd").val() ;
		opts.sxbs=$("#sxbs").val() ;
		opts.xxbs=$("#xxbs").val() ;
		//console.log( opts); 
		//编码json	
		$.ajax({
		type : 'POST',
		url :   baseurl+'Culculate',
		data : {
			"optd" :  JSON.stringify(opts )
		},
		dataType: "json",
		success : function(data) {
			 console.log(data.opt);
			   complete_Opt=data.opt;
			 well=data.opt.wellmodel;
			 //console.log($("#welltb")[0]);
			layui.use('layer', function(){
				  var layer = layui.layer;
				//原生方法渲染:
				  $("#welltb")[0].style.display='block';
				  for(var i=0;i<well.length;i++){
				  var tr=  "<tr > "+
                  "  <td  style='width:150px' > <p contentEditable='true'>"+well[i].wellname+"</p> </td> "+
				  "  <td  style='width:150px' > <p contentEditable='true'>"+ well[i].type+"</p> </td> "+
				  " <td  style='width:150px' > <p contentEditable='true'>"+ well[i].chanye+"</p> </td> "+
				  "  <td  style='width:150px' > <p contentEditable='true'>"+ well[i].down+"</p> </td> "+
				  "  <td  style='width:150px' > <p contentEditable='true'>"+ well[i].up+"</p> </td> ";
				 $("#welltb").append(tr);   //动态添加
				 };
				  layer.msg('加载完毕', {icon: 1});
				});  
				
		}
		 
		
	});
});
	} 

改变table值的更新,写入opt文本功能

function change(){
	layui.use([ 'jquery' ], function() {
		var $ = layui.jquery;
		//修改数据opts,前台的bean
 
		opts=complete_Opt;     
 
		//重新赋值
		for(var i=0;i<opts.wellmodel.length;i++){
		opts.wellmodel[i].wellname=$("#welltb")[0].rows[i+1].children[0].innerText;
		opts.wellmodel[i].type=$("#welltb")[0].rows[i+1].children[1].innerText;
		opts.wellmodel[i].chanye=$("#welltb")[0].rows[i+1].children[2].innerText;
		opts.wellmodel[i].down=$("#welltb")[0].rows[i+1].children[3].innerText;
		opts.wellmodel[i].up=$("#welltb")[0].rows[i+1].children[4].innerText;
		//console.log(a);
		};
		console.log(opts);
		$.ajax({
		type : 'POST',
		url :   baseurl+'change',
		data : {
			"Optmod" :  JSON.stringify(opts )
		},
		dataType : "json",
		success : function(n) {
			//var name=n.itemname;
			 
			//$("#xmm").val(name);
			
			opts=n.opt;
			 layer.msg('数据修改完毕', {icon: 1});	 

		}
	});
});
	}

3.后台
读取json参数转为对象和读取sch文件塞给bean并返回

	@RequestMapping("/Culculate")
	public HashMap nomaosch(String optd) throws JsonParseException, JsonMappingException, IOException  {
		//前台参数optd
		ObjectMapper mapper = new ObjectMapper();
		opt = mapper.readValue(optd,OptModel.class);
		WellData welldata = new WellData();
		LinkedList<WellData> welllist=new LinkedList<WellData>();
		//读sch文件 
		String pathsch =opt.getCslj()+"\\"+opt.getXmm()+".SCH";
		System.out.println(pathsch);
		Scanner scanner = new Scanner(new FileInputStream(pathsch) ) ;
		FileInputStream fis=new FileInputStream(pathsch);
		InputStreamReader isr=new InputStreamReader(fis);
		BufferedReader br = new BufferedReader(isr);
		String line="";
		String[] arrs=null;
		while (true) { 
			String lines=br.readLine();
			if(lines==null)break;
			if(lines.contains("WCONPROD")) {//查找关键字
				welllist.clear(); 
				while((lines = br.readLine())!=null) {
					if(lines.toCharArray().length<16)break;\\选择小于16的数据那一行就是我们要的数据
					arrs = lines.split("\\s+");//按照空格分割一行的数据 
					WellData wellnode = new WellData();
					WellData wellnodea = new WellData();
					wellnode = nwelldata2oil(wellnodea, arrs, opt.getSxbs(), opt.getXxbs()); 
					welllist.add(wellnode);//加一行 井节点,table数据的一行,循环加完
				}
			}
			if(lines.contains("WCONINJE")) {
				while((lines = br.readLine())!=null) { 
					if(lines.toCharArray().length<16)break;
					arrs = lines.split("\\s+");
					WellData wellnode = new WellData();
					WellData wellnodea = new WellData();
					wellnode = nwelldata2water(wellnodea, arrs, opt.getSxbs(), opt.getXxbs());
					welllist.add(wellnode);
				}
			}
		opt.setWellmodel(welllist);
		writeOptFile(opt);
		HashMap data=new HashMap();
		data.put("opt",opt);//bean 
		return data;

	}

从文本获取数据的方法业务:一行油水井数据的赋值处理

private WellData welldata(WellData welldata, String[] arrs, String up, String down) {
		welldata.setChanye(arrs[4]);
		double chanyeliang=Double.parseDouble(arrs[4]);
		DecimalFormat df = new DecimalFormat("#.00");
		String upd=df.format(Double.parseDouble(up)*chanyeliang);
		String dowd=df.format(Double.parseDouble(down)*chanyeliang);
		welldata.setUp(String.valueOf(upd) );
		welldata.setWellname(arrs[0]);
		welldata.setDown(String.valueOf(dowd) );String aa=null;
		//int l=arrs[0].length();
		//if(arrs[0].length()>6) {  aa=(arrs[0].substring(1, 4));}
		//else {  aa=(arrs[0].substring(0, 3));}
		if(arrs[1].equals("WATER")) {
			welldata.setType("water");
		}
		else welldata.setType("oil");
		return welldata;
	}
	private WellData nwelldata2oil(WellData welldata, String[] arrs, String up, String down) {
		welldata.setChanye(arrs[4]);
		double chanyeliang=Double.parseDouble(arrs[4]);
		DecimalFormat df = new DecimalFormat("#.00");
		String upd=df.format(Double.parseDouble(up)*chanyeliang);
		String dowd=df.format(Double.parseDouble(down)*chanyeliang);
		welldata.setUp(String.valueOf(upd) );
		welldata.setWellname(arrs[0]);
		welldata.setDown(String.valueOf(dowd) );String aa=null;
	 
		welldata.setType("oil");
		return welldata;
	}
	private WellData nwelldata2water(WellData welldata, String[] arrs, String up, String down) {
		// TODO Auto-generated method stub			welldata.setWellname(arrs[0]);
		welldata.setChanye(arrs[4]);
		double chanyeliang=Double.parseDouble(arrs[4]);
		DecimalFormat df = new DecimalFormat("#.00");
		String upd=df.format(Double.parseDouble(up)*chanyeliang);
		String dowd=df.format(Double.parseDouble(down)*chanyeliang);
		welldata.setUp(String.valueOf(upd) );
		welldata.setWellname(arrs[0]);
		welldata.setDown(String.valueOf(dowd) );String aa=null;
 
		welldata.setType("water");
		return welldata;
	}
 
	 
}

改变table后,写进opt文件功能,得到后台运行的文件。

@RequestMapping("/change")
		public HashMap change(String Optmod) throws JsonParseException, JsonMappingException, IOException  {
			  ObjectMapper mapper = new ObjectMapper();
			    opt = mapper.readValue(Optmod,OptModel.class);
		      writeOptFile(opt);
			HashMap n=new HashMap();
			n.put("opt",opt);
			return n;
           }
private void writeOptFile(OptModel opt2) {
		FileWriter fw = null;
		FileWriter fw2 = null;
		File file = new File(opt2.getCslj()+"\\"+"optpar.dat");
		File file2 = new File(path_opt);
		try {
			if (!file.exists()) {
				file.createNewFile();
				file2.createNewFile();
			}
			fw = new FileWriter(file);//写参数
			fw2 = new FileWriter(file2);
			fw.write(opt2.getCslj()+"\r\n");
			fw.write(opt2.getYhlj()+"\r\n");
			fw.write(opt2.getXmm()+"\r\n");
			fw.write(opt2.getCscys()+"\r\n");
			fw.write(opt2.getZdyhcs()+"\r\n");
			fw.write(opt2.getZqdx()+"\r\n");
			fw.write(opt2.getZsjs()+"\r\n");
			fw.write(opt2.getCyjs()+"\r\n");
			fw.write(opt2.getYhbs()+"\r\n");
			fw.write(opt2.getDbbc()+"\r\n");
			fw.write(opt2.getYhqsb()+"\r\n");
			fw.write(opt2.getYlys()+"\r\n");
			fw.write(opt2.getHsl()+"\r\n");
			fw.write(opt2.getBx()+"\r\n");
			fw.write(opt2.getJtdccy()+"\r\n");
			fw.write(opt2.getDtdcjd()+"\r\n");
			fw.write("well"+"\r\n");
			fw2.write(opt2.getCslj()+"\r\n");
			fw2.write(opt2.getYhlj()+"\r\n");
			fw2.write(opt2.getXmm()+"\r\n");
			fw2.write(opt2.getCscys()+"\r\n");
			fw2.write(opt2.getZdyhcs()+"\r\n");
			fw2.write(opt2.getZqdx()+"\r\n");
			fw2.write(opt2.getZsjs()+"\r\n");
			fw2.write(opt2.getCyjs()+"\r\n");
			fw2.write(opt2.getYhbs()+"\r\n");
			fw2.write(opt2.getDbbc()+"\r\n");
			fw2.write(opt2.getYhqsb()+"\r\n");
			fw2.write(opt2.getYlys()+"\r\n");
			fw2.write(opt2.getHsl()+"\r\n");
			fw2.write(opt2.getBx()+"\r\n");
			fw2.write(opt2.getJtdccy()+"\r\n");
			fw2.write(opt2.getDtdcjd()+"\r\n");
			fw2.write("well"+"\r\n");
			LinkedList<WellData> well = opt2.getWellmodel();//循环写井数据
			for(int i=0;i<well.size();i++) {
				String names = well.get(i).getWellname();
				if(names.contains("'")){
					names=names.substring(1,names.length()-1);
					well.get(i).setWellname(names);
				}
				fw.write(names+"\r\n");
				fw2.write(names+"\r\n");
			}
			fw.write("boundary"+"\r\n");
			fw2.write("boundary"+"\r\n");
			for(int i=0;i<well.size();i++) {
				fw.write(well.get(i).getChanye()+"  "+well.get(i).getDown()+"  "+well.get(i).getUp()+"\r\n");
				fw2.write(well.get(i).getChanye()+"  "+well.get(i).getDown()+"  "+well.get(i).getUp()+"\r\n");
			}
			fw.flush();
			fw2.flush();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			if(fw != null){
				try {
					fw.close();
					fw2.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}

效果
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值