一、采购订单与各个表之间关系的分析
分析表格思想:字段的意思 , 字段类型 ,哪些字段不能为空 ,字段的出处
二、组合关系映射配置要求
一方(主表):
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = “inputUser_id”)
private Employee inputUser;//录入人(当前登录人)
其他多对一相同配置
@OneToMany(cascade = CascadeType.ALL, mappedBy = “bill”, fetch = FetchType.LAZY, orphanRemoval = true)
private List items = new ArrayList();
cascade = CascadeType.ALL级联操作最全
mappedBy = "bill"一方放弃管理多方,多方的外键字段bill_id,一方不管
orphanRemoval = true如果在一方解除了和多方的关系,一方是可以删除掉多方
optional = false) 表示不能为空
页面管理:一方和多方同时管理(crud 时)
多方(从表)billitem:bill_id配置为非空
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = “bill_id”)
@JsonIgnore//生成json的时候忽略该属性
private Purchasebill bill;// 组合关系,非空
时间格式处理
前台获得数据,显示需要的格式
@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone = “GMT+8”)
public Date getVdate() {
return vdate;
}
数据返回后台的时间格式
@DateTimeFormat(pattern = “yyyy-MM-dd”)
public void setVdate(Date vdate) {
this.vdate = vdate;
}
三、前台页面处理
easyui的引入,数据表格参数与对象参数对应
日期选择:
class="easyui-datebox"
单元格内容处理
获取对象的名称
function formatObj(data) {
if(data){
return data.name;
}
}
方法一样,名称不同
function formatEmp(data) {
if(data){
return data.username;
}
}
前台展示状态选择
function formatStatus(action) {
var data = {
0:"<div style='color:red;'>待审</div>",
1:"<div style='color: green'>已审</div>",
"-1":"<div><s>作废</s></div>"
};
//属性
return data[action];
}
高级查询-日期范围
不能根据出日期数据查询的原因
前端的日期时分秒按照0:00:00来处理,如果不对日期+1处理,结束时间是不能成功获取查询的值.
如下单时间是09-30 15:00:00,而endDate输入09-30,后台获取到09-30 0:00:00
加了一天之后进行查询,不能写<=,只能写<
后台对日期的处理,在条件对象中处理
//如果日期不为空,结束日期加1
Date tempDate = null;
if(endDate!=null){
tempDate = DateUtils.addDays(endDate, 1);
}
后台对下拉列表的处理
根据部门名字查询采购人员
@Query(“select o from Employee o where o.department.name=?1”)
查询所有的供应商
supplierService.findAll();
保存时,常见问题
原因:后台定义了非空字段,而前台保存时返回的参数中并没有该字段
处理:在controller处理时,给个默认值
方式一:
用shiro会话管理,这个必须写了,UserContext中的set,get方法才能用
//当前登录用户为录入人
Employee loginUser = UserContext.getUser();
purchasebill.setInputUser(loginUser);
方式二:
重写save方法
public void save(Purchasebill purchasebill) {
//当前登录用户为录入人
Employee loginUser = UserContext.getUser();
purchasebill.setInputUser(loginUser);
super.save(purchasebill);