基于EHT java 开发平台框架应用的实现(DataGrid,Panel,Dialog,Tree,Accordion 综合应用)

EHT 开发平台框架简介

EHT快速开发及集成应用平台框架,是针对软件开发人员的快速开发框架,该框架封装了满足用户各种需求的相关API函数及UI组件, 通过掌握EHT快速开发框架,可以很轻松的完成各种需求的开发,节约了开发成本缩短了开发周期,并且,通过EHT框架所封装的API, 可以大量避免潜在的bug问题,完全实现了采用30%的代码来完成100%的功能。 

EHT开发框架特点:

  1. 学习成本低廉,有点懂java、javascript、html脚本的人员,就能很轻松的掌握开发框架,并完成需求开发任务。
  2. 通过EHT快速开发平台框架,可以轻松完成开发任务,并且避免了不必要bug问题。
  3. 简单的业务需求开发,甚至不需要写后台的一行java代码,只通过调取EHT封装的UI组件及框架远程调用的API便能轻松完成业务需求。
  4. 框架开发规范简单,易读易懂。
  5. 开发框架支持多数据库,能很轻松的进行数据库转换,不需要修改业务代码。
  6. 开发框架在性能上做了很多工作,优化api算法,最大程度上提升系统性能。
  7. 快速开发框架提供了辅助的开发工具,可以直接将 powerdesigner所设计的pdm文件转换成开发框架的模型配置文件及模型文件,提高了开发效率
EHT 开发平台框架下载地址http://www.ehtsoft.com/module/webpage/eht-download.jsp

EHT开发平台框架演示地址http://demo.ehtsoft.com/

注:EHT开发平台框架一直在开发阶段,每天或几天都有新的功能更新,敬请关注,更新情况请关注新浪微博  2434634091  @游戏e人

这里就不多说了,先给大家介绍下,基于EHT 开发平台框架所实现的 组织机构管理模块,简单讲述下,是如果实现的。

界面实现UI如下:(具体见演示地址http://demo.ehtsoft.com/



组织机构管理的实现组要使用了Eht开发框架中的 Tree,Panel,Datagrid,TabNavigation,Dialog 这5个组件,通过这个五个组件,合理的布局及组件方法配置调用便能开发如图的UI效果。

这个界面操作了后台数据库四个表,分别是 组织机构表,员工表,账户表及账户和组织机构关联表,这四个表的关系为 组织机构表和账户表是多对多的关系,组织机构表和员工表是一对多的关系,账户表和员工表是多对一的关系即一个员工可能有多个账户。

UI部分代码实现如下:(jsp页面)

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>组织机构</title>
<jsp:include page="common.jsp"></jsp:include>
<script type="text/javascript" src="../../json/TreeService.js"></script>
<script type="text/javascript" src="../../json/AccountService.js"></script>
<style type="text/css">
.org-table{width:100%;height:100%;border:0;margin:0;}
td{border:0;}
</style>
<script type="text/javascript">
$(document).ready(function(){
Eht.formDisable("#orgform");
var config = {pidField:"parentid"};
//var bs = new BasicService();
var ts = new TreeService();
var as = new AccountService();
new Eht.Panel({selector:"#orgform",title:"编辑组织结构"});
var query = {};
var datagrid = new Eht.DataGrid({selector:"#accgrid",height:$(".org-table").outerHeight()-$("#accgrid").offset().top + 5,//width:$("#accgrid").width(),
commandbar:true,addButton:false,editAllButton:false,
doQueryService:function(paginate,loadResp){
as.getAccountList(query,paginate,loadResp);
},
doSaveService:function(data,saveResp){
as.saveAccount(data,query["orgid"],saveResp);
},
columns:[
{field:"sysid",label:"代理主键"},
{field:"accountid",label:"账号"},
{field:"userid",label:"用户"},
{field:"password",label:"密码"},
{field:"cts",label:"创建时间"},
{field:"uts",label:"更新时间"}
]
});
var tree = new Eht.Tree({selector:"#orgtree",title:"组织机构",expandAll:true,draggable:true,contextmenu:true,labelField:"orgname",
doQueryService:function(loadResp){
ts.getTree("CORE_ORGANIZATION",config,null,loadResp);
},
doDeleteService:function(data,delResp){
ts.deleteTree("CORE_ORGANIZATION",data,config,delResp);
},
clickItem:function(cdata,data,selectedTag){
this.addItemAfter(cdata);
query["orgid"]=cdata.sysid;
datagrid.doQueryService(true);
},
changeItem:function(cdata,treeData){
Eht.formFill("#orgform",cdata);
},
addItemBefore:function(parentdata,newdata){
if(parentdata!=null){
newdata.parentid=parentdata.sysid;
}
},
addItemAfter:function(cdata){
Eht.formClear("#orgform");
Eht.formEnable("#orgform");
Eht.formFill("#orgform",cdata);
$("#orgsave").attr("disabled",false);
},
dropped:function(data){
ts.updateTree("CORE_ORGANIZATION",data,config,new Eht.Responder({success:function(){
tree.refresh();
}}));
}});

$("#orgsave").click(function(){
var data = Eht.formObj("#orgform",tree.radioData);
delete data.children;
ts.updateItem("CORE_ORGANIZATION",data,new Eht.Responder({success:function(){
tree.doQueryService();
Eht.showSuccess();
}}));
/*//保存可以如下写法
bs.doSaveOrUpdate("CORE_ORGANIZATION",data,new Eht.Responder({success:function(){
tree.doQueryService();
}}));
*/
});
$("#neworg").click(function(){
Eht.formClear("#orgform");
Eht.formEnable("#orgform");
if(tree.radioData!=null){
$("#parentid").val(tree.radioData.sysid);
}
$("#op_status").val("new");
$("#orgsave").attr("disabled",false);
});
$("#newaccount").click(function(e){
datagrid.addEmptyRow();
});
$("#test1").click(function(){
tree.refresh();
});
});
</script>
</head>
<body>
<div style="border:0;width:100%;height:100%;">
<table class="org-table">
<tr>
<td width="250" height="100%" valign="top">
<div id="orgtree" style="width:100%;height:100%;"></div>
</td>
<td valign="top">
<div style="width:100%;height:100%;">
<div id="orgform">
<div style="padding:20px;">
<input type="hidden" name="parentid" id="parentid"/>
<input type="hidden" name="op_status" id="op_status"/>
<label>机构编码</label><input type="text" name="orgcode"/>
<label>机构名称</label><input type="text" name="orgname"/>
</div>
<div class="eht-core-command-bar" style="border-bottom:0;border-left:0;border-right:0;">
<input type="button" value="新增机构" id="neworg"/>
<input type="button" value="保存" id="orgsave" disabled/>
<input type="button" value="新建账户" id="newaccount"/>
<input type="button" value="test" id="test1"/>
</div>
</div>
<br/>
<div id="accgrid" style="width:100%;height:100px;"></div>
</div>
</td>
</tr>
</table>
</div>
</body>
</html>

在这个应用中,后台也写了少量的java代码,后台所写的代码的主要作用是,通过点击组织机构tree节点的时候,将所有当前节点及子节点中的账户及员工信息给过滤出来,同时保存 组织机构和账户表的多对多关系。

界面中的 组织机构的保存、员工信息的保存并没有写后台代码,而是直接通过前台 javascript 调用通用远程接口方法来实现的。通过这个应用,让大家感受下,EHT开发框架所开发出来的应用代码是如此的简单,真正的实现了用少量代码来完成复杂应用的功能,解放了开发人员的工作强度,提高了开发效率,降低了开发成本,同时,降低了开发过程中的bug(因为很多问题,已经被封装测试过了)

下面的代码为后台的java代码(呵呵,实现这些功能,后台的代码很少吧)

package com.ehtsoft.core.services;
import java.util.ArrayList;
import java.util.List;
import com.ehtsoft.core.base.BasicMap;
import com.ehtsoft.core.base.Paginate;
import com.ehtsoft.core.base.PaginateList;
import com.ehtsoft.core.context.AppException;
import com.ehtsoft.core.db.DBService;
import com.ehtsoft.core.db.Query;
import com.ehtsoft.core.model.Account;
import com.ehtsoft.core.model.AccountOrganization;
import com.ehtsoft.core.utils.EhtUtil;
public class AccountService extends AbstractService{
@SuppressWarnings("unchecked")
public PaginateList<Account> getAccountList(BasicMap<String, Object> query,Paginate paginate) throws AppException{
StringBuffer sql = new StringBuffer("SELECT * FROM CORE_ACCOUNT");
if(EhtUtil.isNotEmpty(query) && 
EhtUtil.isNotEmpty(query.get("oids"))){
if(query.get("oids") instanceof List){
List l = (List)query.get("oids");
StringBuffer sb = new StringBuffer();
for(int i=0;i<l.size();i++){
sb.append(l.get(i));
if(i!=l.size()-1){
sb.append(",");
}
}
sql.append(" WHERE SYSID IN(SELECT ACCOUNTID FROM CORE_ACCOUNT_ORGANIZATION WHERE ORGID in (" + sb + "))");
}
}
PaginateList<Account> rtn = DBService.doSelect(sql.toString(), query, paginate, Account.class);
return rtn;
}

public void saveAccount(List<Account> data, AccountOrganization accorg) throws AppException{
try{
createProxyPrimary(data, "CORE_ACCOUNT");

List<AccountOrganization> aolist = new ArrayList<AccountOrganization>();
for(int i=0;i<data.size();i++){
AccountOrganization ao = new AccountOrganization();
ao.setAccountid(data.get(i).getSysid());
ao.setOrgid(accorg.getOrgid());
aolist.add(ao);
}
Query delQuery = new Query();
delQuery.eq("ORGID",accorg.getOrgid());
//开始事物
DBService.startTransaction();
//更新 Account
DBService.doSaveOrUpdate(data);
//根据组织机构编码删除  AccountOrganization
DBService.doDelete("CORE_ACCOUNT_ORGANIZATION",delQuery);
//保存 AccountOrganization list 数据
DBService.doSave(aolist);
DBService.commitTransaction();
}catch(AppException e){
DBService.rollbackTransaction();
throw e;
}finally{
DBService.endTransaction();
}
}
public void deleteAccount() throws AppException{}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值