1. 采购模块

1.1 系统的采购模块

采购员去采购的产品,然后把信息录入到系统里面

1.2 采购模块的关系

数据库 purchasebill purchasebillitem

purchasebill 采购主表( inputUser_id 录入人员

​ auditor_id审核人员

​ buyer_id 采购人员

​ supplier_id 供货商

​ )

purchasebillitem 采购明细 bill_id

1.3 完成domain的创建

Purchasebill

@Entity
@Table(name = "purchasebill")
public class Purchasebill extends BaseDomain {private Date vdate;// 交易时间 -> 需要录入(时间set的时候加上@DateTimeFormat(pattern = "yyyy-MM-dd"))private BigDecimal totalAmount; //总金额 -> 明细计算private BigDecimal totalNum; //总数量 -> 明细计算private Date inputTime = new Date(); //录入时间 ->系统自动生成 当前系统时间private Date auditorTime; //审核时间 -> 可以为空,审核时自己生成/*** 0待审,1已审,-1作废*/private Integer status = 0; //单据状态 -> 默认待审@ManyToOne(fetch = FetchType.LAZY, optional = false)@JoinColumn(name = "supplier_id")private Supplier supplier;// 多对一,optional非空 供应商(需要选择)@ManyToOne(fetch = FetchType.LAZY)@JoinColumn(name = "auditor_id")private Employee auditor;// 多对一,可以为空@ManyToOne(fetch = FetchType.LAZY, optional = false)@JoinColumn(name = "inputUser_id")private Employee inputUser;// 多对一,非空 录入人 -> 登录用户就是录入人@ManyToOne(fetch = FetchType.LAZY, optional = false)@JoinColumn(name = "buyer_id")private Employee buyer;// 多对一,非空 采购员 -> 需要// 一般组合关系使用List/*** 组合关系:整体和部分 不能分开 --强级联* 一个订单有多个明细* cascade:ALL 强级联(支持级联保存和级联删除)* mappedBy:让一方放弃管理 ,交给多方来维护 性能要高一点* 双向一对多或者多对一 一方放弃管理,性能要高一点* orphanRemoval:孤儿删除  可以通过一方删除多方  让一方解除关系 通过一方去上删除**/@OneToMany(cascade = CascadeType.ALL, mappedBy = "bill", fetch = FetchType.LAZY, orphanRemoval = true)private List<Purchasebillitem> items = new ArrayList<Purchasebillitem>();

Purchasebillitem

@Entity
@Table(name = "purchasebillitem")
public class Purchasebillitem extends BaseDomain {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;// 组合关系,非空
}

1.4 前台采购模块展示数据

创建purchasebill.jsp

​ purchasebill.js

和以前展示一样

1.5 高级查询–注意日期

完成按照交易时间和审核状态

(1) 页面在组件拷贝过去

(2)在purchasebillQuery 创建 beginDate endDate status

​ 拼接语句的方法添加代码

​ 注意:处理结束时间的问题 结束时间添加了一天

(3)就可以查询

2.采购明细

(1)准备一个dialog

(2)dialog对话框里面添加一个form表单

(3)dialog对话框里面添加一个编辑表格

​ 编辑表格–easyui扩展组件 celledit

 引入js文件

​ 把代码拷贝过来改造

​ 注意产品的这个值

(4)写新增代码 --封装数据

onSubmit: function(params){//提交之前先做验证//获取编辑表格所有数据var rows = gridItem.datagrid('getRows');for(var i=0;i<rows.length;i++){//明细表格每个数据var rowData = rows[i];params["items["+i+"].product.id"] = rowData.productId.id;params["items["+i+"].price"] = rowData.price;params["items["+i+"].num"] = rowData.num;params["items["+i+"].descs"] = rowData.descs;if(!gridItem.datagrid('validateRow',i)){alert('明细行还有问题,请编辑');return false;}}return true;//验证通过之后才返回true,否则返回false,false它会阻止你提交},

后台代码

public AjaxResult saveOrUpdate(Purchasebill purchasebill){try {//计算总金额 总数量  录入时间 录入人 状态BigDecimal totalAmount = new BigDecimal(0);BigDecimal totalNum = new BigDecimal(0);//从明细里面计算List<Purchasebillitem> items = purchasebill.getItems();for (Purchasebillitem item : items) {//总金额totalAmount = totalAmount.add(item.getNum().multiply(item.getPrice()));//总数量totalNum= totalNum.add(item.getNum());//计算明细小计item.setAmount(item.getNum().multiply(item.getPrice()));//建立多方到一方 一方放弃管理 交个多方来维护外键item.setBill(purchasebill);}purchasebill.setTotalAmount(totalAmount);purchasebill.setTotalNum(totalNum);purchasebill.setInputTime(new Date());//获取当前登录用户Employee employee = (Employee)UserContent.getUser();purchasebill.setInputUser(employee);purchasebill.setStatus(0);//级联保存purchasebillService.save(purchasebill);return new AjaxResult();} catch (Exception e) {e.printStackTrace();return new AjaxResult("操作失败"+e.getMessage());}}

(5)回显的细节问题

​ 表格回显和下拉回显

(6)解决n-to-n的问题

​ 设置关联对象为null

关于采购订单的模型分析和理解相关推荐

  1. SAP中采购订单中的统计型字段分析

    在采购业务中,会产生期间统计分析的需求.比如:以某类别物资(如电脑),以某项目,以部门为条件来统计其发生的采购数量或金额等.这就要求在做采购时,需要准确的输入这样统计型字段信息,才会有准确的输出.以笔 ...

  2. SAP MM 采购订单与相关合同的价格差异问题分析

    SAP MM 采购订单与相关合同的价格差异问题分析 笔者所在的项目里,一般生产性物料PO的价格是来自于合同价格的,而合同的价格来自于采购信息记录的价格,业务部门不允许PO里随便改价格的. 但是业务部门 ...

  3. SAP中采购订单交货己完成相关逻辑和控制原理分析

    在采购订单的行项目中,有一个"交货己完成"标志.看过一些资料,结合应际应用的经验,记下自己的理解: 交货己完成决定订单中的项目是否还有未清项,它可以由系统在达成交货完成条件后自动设 ...

  4. 医药采购系统用户管理模型分析

    3 用户管理模型 3.1 模型分析 业务是什么?业务就是用户需求. 系统用户角色:卫生局.卫生院.卫生室.供货商.系统管理员 用户: 登陆系统进行业务操作. 实体分析: 系统用户表SYSUSER: 记 ...

  5. SAP中采购订单关于收货和发票三种不同控制情况的分析

    采购订单只收货,不做发票 应用于免费交货的情况,即免费从供应商处得到商品.此时,采购订单中的交货项目价格会自动置为0,且无法更改.在采购订单中指定消耗类科目的情况下,收货时不会产生关联会计凭证.但如果 ...

  6. oracle ebs 采购员表,oracle EBS采购订单各表作用分析

    一.采购订单(路径:PO/采购订单/采购订单) 1.po_headers_all 采购订单头表 2.po_lines_all 采购订单行表 --po_header_id=po_headers_all. ...

  7. SAP中采购订单中固定汇率选项的影响分析

    采购过程中的收货和付款不在同一个时间点,因此如果在采购中存在外币交易业务.必然存在一个汇率差异的问题.在SAP中应对该业务情形,有两种处理方式可供选择.如下图所示: 1.在采购订单中选择固定汇率:那么 ...

  8. Holt-Winters模型分析及时间序列预测

    文章目录 数据特点 异常检测 预测器设计 同比环比预测器 基线预测器 Holt-Winters预测器 三次指数滑动平均算法 报警模型中的预测器 计算序列的周期性数据 残差数据实时预测 报警检测比较器的 ...

  9. SAP中采购订单修改触发重新审批的相关控制逻辑及测试

    关于SAP中采购订单(以下简称PO)金额修改与重新触发审批的关系.相信很多应用者都有类似的问题.需要掌握和了解其控制逻辑才能更好的满足业务控制需求.本文结合相关自身企业的应用经验和测试,梳理了一下. ...

最新文章

  1. 了解 C# “.NET研究”4 中的 Dynamic 关键字
  2. Centos6.8 搭建Tomcat服务器
  3. C语言 文件操作10--配置文件读写
  4. Java实体类对象修改日志记录
  5. 数据结构之排序算法(四)-归并排序
  6. solaris 10 安装Apache Mysql PHP
  7. java merge into_Oracle merge into的使用
  8. 2021级C语言大作业 - 一笔画
  9. stm32F10x 看程序知识点记录
  10. SnapGene如何设计sgRNA,构建载体,对靶基因进行敲除
  11. codeforces1359E Modular Stability
  12. Meta研发触觉手套,有人想在元宇宙撸猫,有人产生大胆的想法
  13. ICRA 2020轨迹预测竞赛冠军的方法总结
  14. 阿里P9大牛徒手编写的这份十亿级并发手册,教你彻底玩懂高并发,赶紧收藏
  15. [转载]网络数据流的java处理
  16. Homebrew进阶使用教程(二)-用一个命令行天气客户端构建自己的仓库
  17. Javascript:公农历节日周年计算
  18. 北京进一步强化节能实施,能耗监测、余热回收等为数据中心重点
  19. Rosalind全排列的问题
  20. 数据库是如何通过索引定位数据,索引的原理讲解

热门文章

  1. adobe flash创建按钮并添加动作【Z】
  2. 强烈推荐:给计算机系学生的建议
  3. 九度 1341 -图最短路径 - 艾薇儿的演唱会
  4. UHF读写器jna调用 UHFReader x86
  5. Arduino上传数据至贝壳物联并与FPGA进行交互
  6. vue调用微信扫一扫功能
  7. 碧桂园博智林机器人 一面面试题
  8. iPhone4最新降级教程(iOS5.1.1)
  9. 全国大学生一级计算机考试,全国大学生计算机一级考试模拟试题.
  10. nrf52832之定时器