我在这里学习到最多,渐渐的开始不怎么写代码了。
做个笔记记录下。
Flex客户端
/*
* Book.as
*
* Copyright @2013-2099 Change Soft, All Rights Reserved
*/
package ce.book.bsc
{
import ce.org.Organ;
import ce.pub.common.LinearObject;
import ce.system.access.User;
/**
* <p>图书</p>
*
* @author ZengWenFeng
* @version 1.00
*
* <pre>
* 修改记录:
* 修改后版本 修改人 修改日期 修改内容
* 2013-05-13.1 ZengWenFeng 2013-05-13 create
* </pre>
*/
[Bindable]
[RemoteClass(alias="ce.book.bsc.Book")]
public class Book extends LinearObject
{
/**
* 图书类型
*
* @author ZengWenFeng
*/
public var type: BookType;
/**
* 编码
*
* @author ZengWenFeng
*/
public var code: String;
/**
* 名称
*
* @author ZengWenFeng
*/
public var name: String;
/**
* 国际标准书号(International Standard Book Number)
*
* @author ZengWenFeng
*/
public var isbn: String;
/**
* 创建时间
*
* @author ZengWenFeng
*/
public var crtDt: Date;
/**
* 组织
*
* @author ZengWenFeng
*/
public var organ: Organ;
/**
* 编制人
*
* @author ZengWenFeng
*/
public var author: User;
/**
* 备注
*
* @author ZengWenFeng
*/
public var memo: String;
/**
* 定价
*
* @author ZengWenFeng
*/
public var price: Number;
/**
* 主编
*
* @author ZengWenFeng
*/
public var editor: String;
/**
* 出版社
*
* @author ZengWenFeng
*/
public var press: String;
/**
* 查询关键字
*
* @author ZengWenFeng
*/
public var srchKey:String;
/**
* 构造函数
*
* @author ZengWenFeng
* @date 2013-05-13
*/
public function Book()
{
super();
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearObjPageMgr xmlns="ce.pub.common.*" xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:ce="ce.controls.*"
label="图书管理" creationComplete="init()" showPageSize="true">
<!--
/**
* <p>图书管理</p>
*
* @author ZengWenFeng
* @version 1.00
*
* <pre>
* 修改记录:
* 修改后版本 修改人 修改日期 修改内容
* 2013-05-13.1 ZengWenFeng 2013-05-13 create
* 2013-06-05.1 ZengWenFeng 2013-06-05 修改网格列排序,添加sortableColumns="false" sortExpertMode="true"
* </pre>
*/
-->
<mx:Script>
<![CDATA[
import mx.utils.ObjectUtil;
import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn;
import mx.rpc.events.FaultEvent;
import mx.rpc.remoting.RemoteObject;
import ce.system.access.AccessMgr;
import mx.rpc.events.ResultEvent;
import mx.events.CloseEvent;
import ce.windows.ErrorWindow;
import ce.windows.MessageWindow;
import ce.pub.common.CommonDlg;
import ce.system.sysutil.SysCtx;
/**
* 服务类id
*/
public static const SERVICE_BOOK_MANAGER: String = "ce.book.bsc.BookMgr";
/**
* 生成界面
*
* @author ZengWenFeng
* @date 2013-05-13
*/
override protected function createChildren(): void
{
//
super.createChildren();
// 不显示查看按钮
toolBar.removeChild(btnView);
}
/**
* 协调按钮状态
*
* @author ZengWenFeng
* @date 2013-05-13
*/
override public function adjustBtnStatus(value: Object = null): void
{
//
super.adjustBtnStatus(value);
//判断是否有对应的操作权限
var canAdd: Boolean = AccessMgr.chkAcc(SERVICE_BOOK_MANAGER, "doAdd") == AccessMgr.RIGHT_ENABLED;
var canMod: Boolean = AccessMgr.chkAcc(SERVICE_BOOK_MANAGER, "doModify") == AccessMgr.RIGHT_ENABLED;
var canDel: Boolean = AccessMgr.chkAcc(SERVICE_BOOK_MANAGER, "doDel") == AccessMgr.RIGHT_ENABLED;
var canExp: Boolean = AccessMgr.chkAcc(SERVICE_BOOK_MANAGER, "doExp") == AccessMgr.RIGHT_ENABLED;
var canPrt: Boolean = AccessMgr.chkAcc(SERVICE_BOOK_MANAGER, "doPrint") == AccessMgr.RIGHT_ENABLED;
//
btnAdd.enabled = btnAdd.enabled && canAdd;
btnModify.enabled = btnModify.enabled && canMod;
btnDel.enabled = btnDel.enabled && canDel;
btnExp.enabled = btnExp.enabled && canExp;
btnPreview.enabled = btnPreview.enabled && canPrt;
btnPrint.enabled = btnPrint.enabled && canPrt;
}
/**
* 初始化
*/
protected function init(): void
{
// 查询首页
curPageNo = 1;
load();
}
/**
* 获取记录数
*
* @author ZengWenFeng
* @date 2013-05-13
*/
override public function getCount(): void
{
var prmIn: Object = SysCtx.getPrmIn();
condition.orgId = SysCtx.organ.id;
prmIn.condition = condition;
//
var ro: RemoteObject = new RemoteObject();
ro.destination = SERVICE_BOOK_MANAGER;
ro.getCount(prmIn);
ro.addEventListener(FaultEvent.FAULT, ErrorWindow.faultHandler);
ro.addEventListener(ResultEvent.RESULT, function (event: ResultEvent): void
{
refreshUI(event.result);
});
}
/**
* 加载分页
*
* @author ZengWenFeng
*/
override public function load():void
{
//
var prmIn: Object = SysCtx.getPrmIn();
condition.orgId = SysCtx.organ.id;
condition.pageNo = curPageNo;
condition.pageSize = pageSize;
prmIn.condition = condition;
//
var ro: RemoteObject = new RemoteObject();
ro.destination = SERVICE_BOOK_MANAGER;
ro.doQuery(prmIn);
ro.addEventListener(FaultEvent.FAULT, ErrorWindow.faultHandler);
ro.addEventListener(ResultEvent.RESULT, function (event: ResultEvent): void
{
refreshUI(event.result.items);
});
}
/**
* 查询
*
* @author ZengWenFeng
*/
override public function query(event: MouseEvent): void
{
var dlg: BookQryDlg = new BookQryDlg();
dlg.condition = condition;
dlg.showDlg();
dlg.addEventListener(CommonDlg.DLG_CLOSE, function (event: CloseEvent): void
{
if (event.detail == CommonDlg.CANCEL)
{
return;
}
// 查询首页
pageSize = nsPageSize.value;
curPageNo = 1;
load();
});
}
/**
* 新增
*
* @author ZengWenFeng
* @date 2013-05-13
* @param event
*/
override public function add(event: MouseEvent): void
{
var dlg: BookDlg = new BookDlg();
dlg.mode = CommonDlg.MODE_ADD;
dlg.addEventListener(CommonDlg.ADD_COMPLETE, addDataToUI);
dlg.showDlg();
}
/**
* 新增完成后添加到界面上
*
* @author ZengWenFeng
* @date 2013-05-13
* @param event
*/
protected function addDataToUI(event: Event): void
{
var newObj: Book = event.currentTarget.newObj;
defGridData.addItem(newObj);
}
/**
* 修改
*
* @author ZengWenFeng
* @date 2013-05-13
* @param event
*/
override public function modify(event: MouseEvent): void
{
if (!btnModify.enabled)
{
return;
}
showDlg(defGrid.selectedItem as Book, CommonDlg.MODE_MOD);
}
/**
* 浏览
*
* @author ZengWenFeng
* @date 2013-05-13
* @param event
*/
override public function view(event: MouseEvent): void
{
showDlg(defGrid.selectedItem as Book, CommonDlg.MODE_VIW);
}
/**
* 显示对话框
*
* @author ZengWenFeng
* @param item 选中对象
* @param mode 显示对话框模式
*/
protected function showDlg(item: Book, mode: String): void
{
var dlg: BookDlg = new BookDlg();
dlg.mode = mode;
dlg.oldObj = item;
dlg.addEventListener(CommonDlg.MOD_COMPLETE,
function (event: Event): void
{
modDataToUI(item, event.currentTarget.newObj);
});
dlg.addEventListener(CommonDlg.DEL_COMPLETE,
function (event: Event): void
{
delDataFromUI(item);
});
dlg.showDlg();
}
/**
* 修改完成后更新界面
*
* @author ZengWenFeng
* @param oldObj 旧对象
* @param newObj 新对象
*/
private function modDataToUI(oldObj: Book, newObj: Book): void
{
// 删除原有的对象,并在原来的位置插入修改后的对象
var index: int = defGridData.getItemIndex(oldObj);
defGridData.removeItemAt(index);
defGridData.addItemAt(newObj, index);
// 选中修改后的对象
defGrid.selectedItem = newObj;
}
/**
* 删除
*
* @author ZengWenFeng
* @date 2013-05-13
* @param event
*/
override public function del(event: MouseEvent): void
{
//获取要删除的对象
var item: Book = defGrid.selectedItem as Book;
//提示删除
MessageWindow.show("确定要删除图书[" + item.name + "]吗?", "提示",
MessageWindow.MB_OKCANCEL,
MessageWindow.MB_ICONQUESTION,
MessageWindow.MB_DEFBUTTON2,
function (event: CloseEvent): void
{
if (event.detail != MessageWindow.OK)
{
return;
}
var ro: RemoteObject = new RemoteObject();
ro.destination = SERVICE_BOOK_MANAGER;
ro.addEventListener(FaultEvent.FAULT, ErrorWindow.faultHandler);
ro.addEventListener(ResultEvent.RESULT,
function (resultEvent:ResultEvent):void
{
delDataFromUI(item);
});
var params: Object = SysCtx.getPrmIn();
params.item = item;
ro.doDel(params);
});
}
/**
* 删除后从界面上删除数据
*/
protected function delDataFromUI(item: Book): void
{
defGridData.removeItemAt(defGridData.getItemIndex(item));
}
/**
* 格式化名称
*
* @author ZengWenFeng
*/
private function formatName(item: Object, column: AdvancedDataGridColumn): String
{
return item[column.dataField] ? item[column.dataField].name : "";
}
/**
* 格式化金额
*
* @author ZengWenFeng
*/
private function formatAmt(item: Object, column: AdvancedDataGridColumn): String
{
return item[column.dataField] == 0 ? "" : Number(item[column.dataField]).toFixed(2);
}
/**
* 图书类型排序比较
*
* @author ZengWenFeng
* @param obj1 数据1
* @param obj2 数据2
*/
private function sortCompareType(obj1:Object, obj2:Object):int
{
if (obj1.type && obj2.type)
{
return ObjectUtil.stringCompare(obj1.type.name, obj2.type.name);
}
else
{
return ObjectUtil.compare(obj1.type, obj2.type);
}
}
]]>
</mx:Script>
<ce:CeAdvancedDataGrid width="100%" height="100%" dataProvider="{defGridData}" sortableColumns="false" sortExpertMode="true">
<ce:columns>
<mx:AdvancedDataGridColumn headerText="编码" dataField="code"/>
<mx:AdvancedDataGridColumn headerText="名称" dataField="name"/>
<mx:AdvancedDataGridColumn headerText="出版号" dataField="isbn"/>
<mx:AdvancedDataGridColumn headerText="定价" dataField="price" textAlign="right" labelFunction="formatAmt"/>
<mx:AdvancedDataGridColumn headerText="主编" dataField="editor"/>
<mx:AdvancedDataGridColumn headerText="出版社" dataField="press"/>
<mx:AdvancedDataGridColumn headerText="图书类型" dataField="type" labelFunction="formatName" sortCompareFunction="sortCompareType"/>
<mx:AdvancedDataGridColumn headerText="备注" dataField="memo"/>
</ce:columns>
</ce:CeAdvancedDataGrid>
</LinearObjPageMgr>
<?xml version="1.0" encoding="utf-8"?>
<LinearObjDlgEx xmlns="ce.pub.common.*" xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:ce="ce.controls.*"
width="530" height="220" layout="absolute">
<!--
/**
* <p>图书对话框</p>
*
* @author ZengWenFeng
* @version 1.00
*
* <pre>
* 修改记录:
* 修改后版本 修改人 修改日期 修改内容
* 2013-05-13.1 ZengWenFeng 2013-05-13 create
* </pre>
*/
-->
<mx:Script>
<![CDATA[
import ce.system.sysutil.TreeProviderFactory;
import mx.utils.ObjectUtil;
import ce.pub.util.MnemHelper;
import ce.windows.ErrorWindow;
import ce.windows.MessageWindow;
import mx.utils.StringUtil;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.remoting.RemoteObject;
import ce.system.sysutil.SysCtx;
import ce.pub.common.CommonDlg;
/**
* 图书服务类标识
*
* @author ZengWenFeng
*/
public static const SERVICE_BOOK_MANAGER: String = "ce.book.bsc.BookMgr";
/**
* 旧对象
*
* @author ZengWenFeng
*/
public var oldObj: Book;
/**
* 新对象
*
* @author ZengWenFeng
*/
public var newObj: Book;
/**
* 显示对话框
*
* @author ZengWenFeng
*/
override public function showDlg(): void
{
// 如果是新增模式,则直接显示编辑界面
if (mode == MODE_ADD)
{
show();
}
// 否则获取图书
else
{
//
var prmIn: Object = SysCtx.getPrmIn();
prmIn.id = oldObj.id;
ro.getById(prmIn);
//
var ro: RemoteObject = new RemoteObject();
ro.destination = SERVICE_BOOK_MANAGER;
ro.addEventListener(FaultEvent.FAULT, ErrorWindow.faultHandler);
ro.addEventListener(ResultEvent.RESULT, function (e: ResultEvent): void
{
if (e.result.item == null)
{
MessageWindow.show("图书[" + oldObj.name + "]已被删除!", "提示", MessageWindow.MB_OK, MessageWindow.MB_ICONINFORMATION);
// 发生删除结束事件
dispatchEvent(new Event(DEL_COMPLETE));
return;
}
//
oldObj = e.result.item as Book;
//
show();
});
}
}
/**
* 初始化
*
* @author ZengWenFeng
*/
override protected function init(): void
{
tfType.treeProvider.addParameter("organ.id = '" + SysCtx.organ.id + "'");
super.init();
}
/**
* 清空界面
*
* @author ZengWenFeng
*/
override protected function cleanUI(): void
{
var prmIn:Object = SysCtx.getPrmIn();
prmIn.orgId = SysCtx.organ.id;
// 获取新编码
var ro:RemoteObject = new RemoteObject();
ro.destination = SERVICE_BOOK_MANAGER;
ro.newCode(prmIn);
ro.addEventListener(FaultEvent.FAULT, ErrorWindow.faultHandler);
ro.addEventListener(ResultEvent.RESULT, function (event:ResultEvent):void
{
txtCode.text = event.result as String;
comparator.append(txtCode);
});
//清空数据
txtName.text = "";
txtIsbn.text = "";
nsPrice.value = 0;
txtEditor.text = "";
txtPress.text = "";
tfType.clear();
txtMemo.text = "";
//设置焦点
txtName.setFocus();
// 保存当前状态
comparator.save(this);
}
/**
* 设置数据到界面上
*
* @author ZengWenFeng
*/
override protected function setDataToUI(): void
{
// 设置数据到界面
txtCode.text = oldObj.code;
txtName.text = oldObj.name;
txtIsbn.text = oldObj.isbn;
nsPrice.value = oldObj.price;
txtEditor.text = oldObj.editor;
txtPress.text = oldObj.press;
tfType.setId(oldObj.type ? oldObj.type.id : null);
txtMemo.text = oldObj.memo;
// 设置焦点
txtName.setFocus();
// 如果是修改状态,则保存当前状态
if (mode == MODE_MOD)
{
comparator.save(this);
}
}
/**
* 新增
*
* @author ZengWenFeng
*/
override protected function add(handler: Function = null): void
{
//验证数据是否合法
if (!checkData())
{
return;
}
//从界面上获取数据
getDataFromUI();
//
var prmIn: Object = SysCtx.getPrmIn();
prmIn.item = newObj;
//新增
var ro: RemoteObject = new RemoteObject();
ro.destination = SERVICE_BOOK_MANAGER;
ro.doAdd(prmIn);
ro.addEventListener(FaultEvent.FAULT, ErrorWindow.faultHandler);
ro.addEventListener(ResultEvent.RESULT, function (event: ResultEvent): void
{
// 设置新增对象
newObj.id = event.result.id;
newObj.crtDt = event.result.crtDt;
newObj.srchKey = event.result.srchKey;
// 触发对象已增加事件
dispatchEvent(new Event(CommonDlg.ADD_COMPLETE));
if (handler == null)
{
// 清空界面
cleanUI();
}
else
{
handler();
}
});
}
/**
* 修改
*
* @author ZengWenFeng
*/
override protected function modify(handler: Function = null): void
{
//验证数据是否合法
if (!checkData())
{
return;
}
//从界面上获取数据
getDataFromUI();
//
var prmIn: Object = SysCtx.getPrmIn();
prmIn.item = newObj;
// 修改
var ro: RemoteObject = new RemoteObject();
ro.destination = SERVICE_BOOK_MANAGER;
ro.doModify(prmIn);
ro.addEventListener(FaultEvent.FAULT, ErrorWindow.faultHandler);
ro.addEventListener(ResultEvent.RESULT, function (event: ResultEvent): void
{
// 设置新增对象
newObj.srchKey = event.result.srchKey;
// 触发对象已修改事件
dispatchEvent(new Event(CommonDlg.MOD_COMPLETE));
if (handler == null)
{
// 关闭对话框
close();
}
else
{
handler();
}
});
}
/**
* 验证数据合法性
*
* @author ZengWenFeng
*/
override protected function checkData(): Boolean
{
//验证编码不能为空
if (StringUtil.trim(txtCode.text) == "")
{
txtCode.setFocus();
MessageWindow.show("编码不允许为空!", "提示", MessageWindow.MB_OK, MessageWindow.MB_ICONWARNING);
//
return false;
}
//验证名称不能为空
if (StringUtil.trim(txtName.text) == "")
{
txtName.setFocus();
MessageWindow.show("名称不允许为空!", "提示", MessageWindow.MB_OK, MessageWindow.MB_ICONWARNING);
//
return false;
}
//
return true;
}
/**
* 从界面上获取数据
*
* @author ZengWenFeng
*/
override protected function getDataFromUI(): void
{
//
newObj = new Book();
// 在更新模式
if (mode == MODE_MOD)
{
newObj.id = oldObj.id;
}
// 新对象
newObj.code = StringUtil.trim(txtCode.text);
newObj.name = StringUtil.trim(txtName.text);
newObj.isbn = StringUtil.trim(txtIsbn.text);
newObj.price = nsPrice.value;
newObj.editor = StringUtil.trim(txtEditor.text);
newObj.press = StringUtil.trim(txtPress.text);
newObj.type = tfType.selectedItem as BookType;
newObj.memo = StringUtil.trim(txtMemo.text);
newObj.organ = SysCtx.organ;
newObj.author = SysCtx.user;
newObj.crtDt = new Date();
}
]]>
</mx:Script>
<ce:CeLabeledTextInput id="txtCode" label="编码" required="true" maxChars="100" x="10" y="10"/>
<ce:CeLabeledTextInput id="txtName" label="名称" required="true" maxChars="200" x="258" y="10"/>
<ce:CeLabeledTextInput id="txtIsbn" label="书号" maxChars="50" x="10" y="42"/>
<ce:CeLabeledNumericStepper id="nsPrice" label="定价" x="258" y="42" minimum="0" maximum="99999" stepSize="0.01"/>
<ce:CeLabeledTextInput id="txtEditor" label="主编" maxChars="50" x="10" y="74"/>
<ce:CeLabeledTextInput id="txtPress" label="出版社" maxChars="50" x="258" y="74"/>
<ce:CeCommonDropdownTree id="tfType" label="图书类型" treeType="{TreeProviderFactory.TREE_BOOK_TYPE}" x="10" y="106"/>
<ce:CeLabeledTextInput id="txtMemo" label="备注" maxChars="2000" x="258" y="106"/>
</LinearObjDlgEx>
JAVA服务端:
/*
* Book.java
*
* Copyright @2013-2099 Fuzhou Change Software Co, Ltd, All Rights Reserved
*/
package ce.book.bsc;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import ce.org.Organ;
import ce.pub.common.LinearObject;
import ce.system.access.User;
/**
* <p>图书</p>
*
* @author ZengWenFeng
* @version 1.00
*
* <pre>
* 修改记录:
* 修改后版本 修改人 修改日期 修改内容
* 2011-05-13.1 ZengWenFeng 2011-05-13 create
* </pre>
*/
@Entity
@Table(name = "Book_bsc_Book")
public class Book extends LinearObject
{
/**
* Adds a default serial version ID to the selected type.
*
* Use this option to add a user-defined ID in combination with custom
* serialization code if the type did undergo
* structural changes since its first release.
*/
private static final long serialVersionUID = 1L;
/**
* 图书类型
*
* @author ZengWenFeng
*/
private BookType type;
@ManyToOne
@JoinColumn(name = "typeId")
public BookType getType()
{
return type;
}
public void setType(BookType type)
{
this.type = type;
}
/**
* 编码
*
* @author ZengWenFeng
*/
private String code;
public String getCode()
{
return code;
}
public void setCode(String code)
{
this.code = code;
}
/**
* 名称
*
* @author ZengWenFeng
*/
private String name;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
/**
* 国际标准书号(International Standard Book Number)
*
* @author ZengWenFeng
*/
private String isbn;
public String getIsbn()
{
return isbn;
}
public void setIsbn(String isbn)
{
this.isbn = isbn;
}
/**
* 创建日期
*
* @author ZengWenFeng
*/
private Date crtDt;
public Date getCrtDt()
{
return crtDt;
}
public void setCrtDt(Date crtDt)
{
this.crtDt = crtDt;
}
/**
* 组织
*
* @author ZengWenFeng
*/
private Organ organ;
@ManyToOne
@JoinColumn(name = "orgId")
public Organ getOrgan()
{
return organ;
}
public void setOrgan(Organ organ)
{
this.organ = organ;
}
/**
* 编制人
*
* @author ZengWenFeng
*/
private User author;
@ManyToOne
@JoinColumn(name = "authorId")
public User getAuthor()
{
return author;
}
public void setAuthor(User author)
{
this.author = author;
}
/**
* 备注
*
* @author ZengWenFeng
*/
private String memo;
public String getMemo()
{
return memo;
}
public void setMemo(String memo)
{
this.memo = memo;
}
/**
* 单价
*
* @author ZengWenFeng
*/
private BigDecimal price;
public BigDecimal getPrice()
{
return price;
}
public void setPrice(BigDecimal price)
{
this.price = price;
}
/**
* 主编
*
* @author ZengWenFeng
*/
private String editor;
public String getEditor()
{
return editor;
}
public void setEditor(String editor)
{
this.editor = editor;
}
/**
* 出版社
*
* @author ZengWenFeng
*/
private String press;
public String getPress()
{
return press;
}
public void setPress(String press)
{
this.press = press;
}
/**
* 查询关键字
*
* @author ZengWenFeng
*/
private String srchKey;
public String getSrchKey()
{
return srchKey;
}
public void setSrchKey(String srchKey)
{
this.srchKey = srchKey;
}
}
/*
* BookMgr.java
*
* Copyright @2013-2099 Change Soft, All Rights Reserved
*/
package ce.book.bsc;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.springframework.flex.remoting.RemotingDestination;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import ce.pub.annotation.Description;
import ce.pub.annotation.Excluded;
import ce.pub.common.LinearManager;
import ce.pub.util.MiscUtil;
import ce.pub.util.PinyinUtil;
/**
* <p>图书管理器</p>
*
* @author ZengWenFeng
* @version 1.00
*
* <pre>
* 修改记录:
* 修改后版本 修改人 修改日期 修改内容
* 2013-05-13.1 ZengWenFeng 2013-05-13 create
* </pre>
*/
@Service("ce.book.bsc.BookMgr")
@RemotingDestination
@Transactional
public class BookMgr extends LinearManager<Book, BookDAO>
{
/**
* 新增
*
* @author ZengWenFeng
* @param prmIn item 图书
*/
@Description("新增图书")
@Override
public Map<String, Object> doAdd(Map<String, Object> prmIn)
{
// 获取参数
Book item = (Book) prmIn.get("item");
// 设置创建时间
item.setCrtDt(new Date());
// 设置查询关键字
item.setSrchKey(PinyinUtil.getSpelledBlock(item.getName()) + " " +
MiscUtil.nullToEmpty(item.getCode()) + " " +
MiscUtil.nullToEmpty(item.getIsbn()));
// 新增
getDAO().add(item);
// 设置返回值
Map<String, Object> prmOut = new HashMap<String, Object>();
prmOut.put("id", item.getId());
prmOut.put("crtDt", item.getCrtDt());
prmOut.put("srchKey", item.getSrchKey());
return prmOut;
}
/**
* 删除
*
* @author ZengWenFeng
* @param prmIn item 图书
*/
@Description("删除图书")
@Override
public Map<String, Object> doDel(Map<String, Object> prmIn)
{
getDAO().del((Book) prmIn.get("item"));
return null;
}
/**
* 修改
*
* @author ZengWenFeng
* @param prmIn item 图书
*/
@Description("修改图书")
@Override
public Map<String, Object> doModify(Map<String, Object> prmIn)
{
// 获取参数
Book item = (Book) prmIn.get("item");
// 设置查询关键字
item.setSrchKey(PinyinUtil.getSpelledBlock(item.getName()) + " " +
MiscUtil.nullToEmpty(item.getCode()) + " " +
MiscUtil.nullToEmpty(item.getIsbn()));
// 修改
getDAO().modify(item);
// 设置返回值
Map<String, Object> prmOut = new HashMap<String, Object>();
prmOut.put("srchKey", item.getSrchKey());
return prmOut;
}
/**
* 查询
*
* @author ZengWenFeng
* @param prmIn condition 查询条件
* @return
*/
@SuppressWarnings("unchecked")
@Excluded
@Override
public Map<String, Object> doQuery(Map<String, Object> prmIn)
{
Map<String, Object> prmOut = new HashMap<String, Object>();
prmOut.put("items", getDAO().query((Map<String, Object>) prmIn.get("condition")));
return prmOut;
}
/**
* 获取记录数
*
* @author ZengWenFeng
* @param prmIn condition 查询条件
* @return
*/
@SuppressWarnings("unchecked")
public long getCount(Map<String, Object> prmIn)
{
return getDAO().getCount((Map<String, Object>) prmIn.get("condition"));
}
/**
* 根据id获取对象
*
* @author ZengWenFeng
* @param prmIn id
* @return
*/
public Map<String, Object> getById(Map<String, Object> prmIn)
{
Map<String, Object> prmOut = new HashMap<String, Object>();
prmOut.put("item", getDAO().getById((String) prmIn.get("id")));
return prmOut;
}
/**
* 获取简单对象
*
* @author ZengWenFeng
* @param id
* @return
*/
public Book getSimpleObjectById(String id)
{
return getDAO().getSimpleObjectById(id);
}
/**
* 获取新编码
*
* @author ZengWenFeng
* @param prmIn orgId 组织Id
* @return
*/
public String newCode(Map<String, Object> prmIn)
{
return getDAO().newCode((String) prmIn.get("orgId"));
}
}
/*
* BookDAO.java
*
* Copyright @2013-2099 Change Soft, All Rights Reserved
*/
package ce.book.bsc;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.hibernate.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import ce.pub.common.LinearDAO;
import ce.pub.util.MiscUtil;
import ce.pub.util.ObjectUtil;
/**
* <p>图书DAO</p>
*
* @author ZengWenFeng
* @version 1.00
*
* <pre>
* 修改记录:
* 修改后版本 修改人 修改日期 修改内容
* 2013-05-13.1 ZengWenFeng 2013-05-13 create
* </pre>
*/
@Repository("ce.book.bsc.BookDAO")
public class BookDAO extends LinearDAO<Book>
{
/**
* 对象工具类
*
* @author ZengWenFeng
*/
private ObjectUtil objectUtil;
@Autowired
public void setObjectUtil(ObjectUtil objectUtil)
{
this.objectUtil = objectUtil;
}
/**
* 查询
*
* @author ZengWenFeng
* @date 2011-08-04
* @param condition queryCondition
*/
@SuppressWarnings("unchecked")
public List<Book> query(Map<String, Object> condition)
{
// 获取参数
Integer pageNo = (Integer) condition.get("pageNo");
Integer pageSize = (Integer) condition.get("pageSize");
//
StringBuilder hql = new StringBuilder();
hql.append("SELECT m FROM Book m ");
hql.append("LEFT JOIN m.type t ");
appendCondition(hql, condition);
hql.append("ORDER BY m.crtDt DESC ");
Query query = this.getSessionFactory().getCurrentSession()
.createQuery(hql.toString())
.setProperties(condition);
// 如果有分页,则按分页查询
if (pageNo != null && pageSize != null && pageNo > 0)
{
query.setFirstResult(MiscUtil.getBgnObjIndex(pageNo, pageSize)).setMaxResults(pageSize);
}
return query.list();
}
/**
* 获取记录数
*
* @author ZengWenFeng
* @param condition 查询条件
* @return
*/
public long getCount(Map<String, Object> condition)
{
StringBuilder hql = new StringBuilder();
hql.append("SELECT COUNT(m) FROM Book m ");
hql.append("LEFT JOIN m.type t ");
appendCondition(hql, condition);
return (Long) this.getSessionFactory().getCurrentSession().createQuery(hql.toString())
.setProperties(condition)
.uniqueResult();
}
/**
* 追加查询条件
*
* @author ZengWenFeng
* @param hql
* @param condition 查询条件
*/
protected void appendCondition(StringBuilder hql, Map<String, Object> condition)
{
// 获取参数
String typeIsn = (String)condition.get("typeIsn");
String code = (String)condition.get("code");
String name = (String)condition.get("name");
String isbn = (String)condition.get("isbn");
hql.append("WHERE m.organ.id = :orgId ");
if (typeIsn != null && !typeIsn.equals(""))
{
hql.append("AND (t.isn = :typeIsn OR t.isn LIKE :childTypeIsn) ");
condition.put("childTypeIsn", typeIsn + ".%");
}
if (code != null && !code.equals(""))
{
hql.append("AND m.code LIKE :code ");
condition.put("code", "%" + code + "%");
}
if (name != null && !name.equals(""))
{
hql.append("AND m.name LIKE :name ");
condition.put("name", "%" + name + "%");
}
if (isbn != null && !isbn.equals(""))
{
hql.append("AND m.isbn LIKE :isbn ");
condition.put("isbn", "%" + isbn + "%");
}
}
/**
* 获取新编码
*
* @author ZengWenFeng
* @param orgId 组织Id
* @return
*/
public String newCode(String orgId)
{
Map<String, Object> params = new HashMap<String, Object>();
params.put("orgId", orgId);
return objectUtil.newCode(Book.class, "001", "code", "organ.id = :orgId", params);
}
}