1.准备工作 创建 实体类 配置关系和 前端页面 展示
1.Purchasebill组合关系的一方
package cn.itsource.aisell.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import javax.persistence.*;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* (Purchasebill)实体类
*
* @author jie
* @since 2019-08-13 18:54:08
*/
@Entity
@Table(name="purchasebill")
public class Purchasebill extends BaseDomain {
private Date vdate; // 交易时间 前台传过来
private BigDecimal totalAmount; //订单总金额 后台计算
private BigDecimal totalNum;// 总数量
private Date inputtime = new Date(); //录入时间 后台生成
private Date auditortime; //审核时间
private Integer status; //单据状态 0 未审核 -1 不通过 1 通过
@ManyToOne(fetch = FetchType.LAZY,optional = false)
@JoinColumn(name = "supplier_id")
private Supplier supplier;// 多对一 供应商(需要选择) 可以为空
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "auditor_id")
private Employee auditor; //审核人 录入可以为null
@ManyToOne(fetch = FetchType.LAZY,optional = false)
@JoinColumn(name = "inputuser_id")
private Employee inputuser;//录入人 不能为null 当前登陆用户
@ManyToOne(fetch = FetchType.LAZY,optional = false)
@JoinColumn(name = "buyer_id")
private Employee buyer; //采购员
//明細 强级联 orphanRemoval 一方解除关系 去删除
@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.LAZY,mappedBy ="bill",orphanRemoval = true)
private List<Purchasebillitem> items = new ArrayList<>();
//格式化时间 最好写在 getset方法上
@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss",timezone = "GMT+8")
public Date getVdate() {
return vdate;
}
@JsonFormat(pattern = "yyyy-MM-dd")
public void setVdate(Date vdate) {
this.vdate = vdate;
}
2.purchasebillitem组合关系的多方
private BigDecimal price; //价格
private BigDecimal num; //数量
private BigDecimal amount; //产品小计 价格*数量
private String descs; //描述
// 非空 产品
@ManyToOne(fetch = FetchType.LAZY,optional = false)
@JoinColumn(name = "product_id")
private Product product;
@ManyToOne(fetch = FetchType.LAZY,optional = false)
@JoinColumn(name = "bill_id")
@JsonIgnore // 返回页面 不展示出来 生成json 的时候忽略这个属性
private Purchasebill bill;
3.purchasebill.jsp
<table id="purchasebillGrid" class="easyui-datagrid" data-options="fit:true,fixed:true,fitColumns:true,toolbar:'#tb',singleSelect:true";
url="/purchasebill/page"
iconCls="icon-save"
rownumbers="true" pagination="true">
<thead>
<tr>
<th width="20" field="vdate">交易时间</th>
<th width="20" field="supplier" data-options="formatter:formatObj">供应商</th>
<th width="20" field="buyer" data-options="formatter:formatEmp">采购员</th>
<th width="20" field="totalNum">总数量</th>
<th width="20" field="totalAmount" >总金额</th>
<th width="20" field="status" data-options="formatter:formatStatus" >状态</th>
</tr>
</thead>
</table>
4.purchasebill.js
//表格数据格式化 formatObj 供应商转换
function formatObj(value){
if(value){
return value.name;
}
}
//ormatEmp 采购员
function formatEmp(value){
if(value){
return value.username;
}
}
// 状态转换 0 1 -1
function formatStatus(value){
var data = {
0:"<div style='color: green'>审核中</div>",
1:"<div style='color: red'>审核通过</div>",
"-1":"<div><s>审核未通过</s></div>"
};
return data[value];
}
2.添加 查询条件 主要是时间查询 首先添加查询组件
<div id="cc" class="easyui-calendar"></div>
<form id="searchForm" action="/purchasebill/download" method="post">
日期 : <input name="beginDate" class="easyui-datebox" style="height:32px" sharedCalendar="#cc">
- <input name="endDate" class="easyui-datebox" style="height:32px" sharedCalendar="#cc">
状态 :<select class="easyui-combobox" name="status"
data-options="panelHeight:'auto'"
>
<option value="">--请选择--</option>
<option value="0">待审</option>
<option value="-1">作废</option>
<option value="1">已审</option>
</select>
<a href="#" data-method="search" class="easyui-linkbutton" iconCls="icon-search">查找</a>