(3)修改OrdersBiz里面
(4)OrdersAction
3、双向关联引发的问题解决
1、完善上面订单显示的效果
(1)创建orders.js
$(function(){
$(‘#grid’).datagrid({
url: ‘orders_listByPage?t1.type=1’,
columns:[[
{field:‘uuid’,title:‘编号’,width:100},
{field:‘createtime’,title:‘生成日期’,width:100,formatter:formatDate},
{field:‘checktime’,title:‘审核日期’,width:100,formatter:formatDate},
{field:‘starttime’,title:‘确认日期’,width:100,formatter:formatDate},
{field:‘endtime’,title:‘入库日期’,width:100,formatter:formatDate},
{field:‘creater’,title:‘下单员’,width:100},
{field:‘checker’,title:‘审核员’,width:100},
{field:‘starter’,title:‘采购员’,width:100},
{field:‘ender’,title:‘库管员’,width:100},
{field:‘supplier’,title:‘供应商或客户’,width:100},
{field:‘totalmoney’,title:‘合计金额’,width:100},
{field:‘state’,title:‘状态’,width:100,formatter:getState},
{field:‘waybillsn’,title:‘运单号’,width:100}
]]
});
});
/**
-
日期格式化器
-
@param value
-
@returns
*/
function formatDate(value){
return new Date(value).Format(‘yyyy-MM-dd’);
}
/**
-
获取订单的状态
-
@param value
-
@returns
-
采购: 0:未审核 1:已审核, 2:已确认, 3:已入库
*/
function getState(value){
switch(value * 1){
case 0:return ‘未审核’;
case 1:return ‘已审核’;
case 2:return ‘已确认’;
case 3:return ‘已入库’;
default: return ‘’;
}
}
(2)创建orders.html
(3)修改Orders
添加各个内容对应的名称属性
注入ISupplierDao,生成Get和Set方法
(4)修改OrdersBiz对象
通过对应不同的order当中的id到别的表当中查询对应id的name并设置到对应的属性到orders当中
public List getListByPage(Orders t1, Orders t2, Object param, int firstResult, int maxResults) {
// 获取分页后的订单列表,因为刚刚Orders当中设置的值还是为空下面需要遍历orderlist为其赋值
// 获取所有所有的订单集合
List ordersList = super.getListByPage(t1, t2, param, firstResult, maxResults);
// 缓存员工的编号和员工的名称,key=员工的编号,value=员工的名称
// (目的是从订单集合当中获取对应所有的每个订单对应的员工编号和员工姓名),应为id对应名称的重复概率很大所以需要一个MPA集合作为缓存
Map<Long, String> empNameMap = new HashMap<Long, String>();
// 缓存供应商的编号和供应商的名称,key=供应商的编号,value=供应商的名称
// (目的是从订单集合当中获取对应所有的每个订单对应的供应商编号和供应商姓名),应为id对应名称的重复概率很大所以需要一个MPA集合作为缓存
Map<Long, String> supplierNameMap = new HashMap<Long, String>();
// 循环,获取员工的名称
for (Orders o : ordersList) {// 遍历订单集合
// 下面通过Orders当中的id查询对应每一个id对应的名称
// 将对应的创建订单姓名的人放入到对应订单的姓名订单数据当中
o.setCreaterName(getEmpName(o.getCreater(), empNameMap));
// 设置订单审核人员的名称
o.setCheckerName(getEmpName(o.getChecker(), empNameMap));
o.setStarterName(getEmpName(o.getStarter(), empNameMap));
o.setEnderName(getEmpName(o.getEnder(), empNameMap));
// 供应商
o.setStarterName(getSupplierName(o.getSupplieruuid(), supplierNameMap));
}
return ordersList;
}
// 获取员工的名称
// uuid 员工编号
// empNameMap 员工编号以及员工的名称
// 返回员工的名称
private String getEmpName(Long uuid, Map<Long, String> empNameMap) {
// 通过当前集合当中的uuid获取对应的值的员工姓名
if(null == uuid) {
return null;
}
String empName = empNameMap.get(uuid);
// 先从Map集合当中通过对应的id获取name如果有就不需要获取对应的姓名,如果没有就通过id、
// 重新向数据库查询对应id的name并将其id】和姓名放入到map 集合当中
if (null == empName) {
// 如果没有找到员工的名称,则进行数据库查询
empName = empDao.get(uuid).getName();// 通过id查询对应员工的姓名
// 存入缓存中
empNameMap.put(uuid, empName);// 将员工的id和姓名存入emp集合当中
}
return empName;
}
// 获取供应商的名称
// uuid 供应商编号
// supplierNameMap 供应商编号以及供应商的名称
// 返回供应商的名称
private String getSupplierName(Long uuid, Map<Long, String> supplierNameMap) {
if(null == uuid) {
return null;
}
// 通过当前集合当中的uuid获取对应的值的供应商姓名