该方法将根据Item对象中封装的供应商ID编号和供应商名称获取指定供应商的数据,并将该供应商的数据封装到实体对象中,然后返回该实体对象。关键代码如下:
例程11 代码位置:光盘\\TM\\01\\JXCManager\\src\\com\\lzw\\dao\\Dao.java
1. 2. 3. 4. 5. 6. 7. 8. 9.
//读取指定供应商信息
public static TbGysinfo getGysInfo(Item item) {
String where = \ + item.getName() + \//默认的查询条件以供应商名称为主
if (item.getId() != null) //如果Item对象中存有ID编号
where = \ + item.getId() + \//则以ID编号为查询条件
TbGysinfo info = new TbGysinfo();
ResultSet set = findForResultSet(\tb_gysinfo where \ try {
if (set.next()) { //封装供应商数据到实体对象中
11. info.setAddress(set.getString(\ 12. info.setBianma(set.getString(\ 13. info.setFax(set.getString(\ 14. info.setJc(set.getString(\ 15. info.setLian(set.getString(\ 16. info.setLtel(set.getString(\ 17. info.setMail(set.getString(\ 18. info.setName(set.getString(\ 19. info.setTel(set.getString(\ 20. info.setYh(set.getString(\ 21. }
22. } catch (SQLException e) { 23. e.printStackTrace(); 24. }
25. return info;
//返回供应商实体对象 26. }
1.6.1 编写Dao公共类(2) 3.updateGys()方法
该方法用于更新供应商的基础信息,它接收供应商的实体类TbGysinfo作方法参数,在方法中直接解析供应商实体对象中的属性,并将这些属性更新到数据表中。关键代码如下:
10. info.setId(set.getString(\
例程12 代码位置:光盘\\TM\\01\\JXCManager\\src\\com\\lzw\\dao\\Dao.java
1. 2. 3. 4. 5. 6. 7. 8. 9.
//修改供应商信息的方法
public static int updateGys(TbGysinfo gysInfo) {
return update(\jc='\ + \address='\,bianma='\ + gysInfo.getBianma() + \tel='\ + \fax='\,lian='\tLian()
+ \ltel='\,mail='\ + gysInfo.getMail() + \yh='\ + \id='\\
10. }
4.insertRukuInfo()方法
该方法负责完成入库单信息的添加,涉及到库存表、入库主表和入库详细表等多个数据表的操作。为保证数据的完整性,该方法将入库信息的添加操作放在事务中完成,方法将接收入库主表的实体类TbRukuMain作参数,该实体类中包含了入库详细表的引用。关键代码如下:
例程13 代码位置:光盘\\TM\\01\\JXCManager\\src\\com\\lzw\\dao\\Dao.java
1. 2. 3. 4. 5. 6. 7. 8. 9.
public static boolean insertRukuInfo(TbRukuMain ruMain) { //在事务中添加入库信息 try {
boolean ?autoCommit = conn.getAutoCommit();
conn.setAutoCommit(false); ? //取消自动提交模式
insert(\//添加入库主表记录
+ \\
+ ruMain.getYsjl() + \','\
+ ruMain.getRkdate() + \'\
+ ruMain.getJsr() + \;
10. Set
r.hasNext();) {
12. TbRukuDetail details = iter.next();
13. insert(\
ruMain.getRkId() //添加入库详细表记录
14. + \
+ details.getDj() + \ 15. Item item = new Item();
16. item.setId(details.getTabSpinfo()); 17. TbSpinfo spInfo = getSpInfo(item);
18. if (spInfo.getId() != null && !spInfo.getId().isEmpty())
{
19. TbKucun kucun = getKucun(item);
20. if (kucun.getId() == null || kucun.getId().
isEmpty()) { //添加或修改库存表记录
21. insert(\
spInfo.getId()
22. + \
\
23. + \
\
24. + \
\ 25. } else {
26. int sl = kucun.getKcsl() + details.getSl(); 27. update(\kcsl=\
\,dj=\ where id='\\ 28. } 29. } 30. }
31. conn.commit(); ?
//提交事务
32. conn.setAutoCommit(autoCommit);
//恢复自动提交模式
33. } catch (SQLException e) { 34. try {
35. conn.rollback(); ?
//如果出错,回退事务
36. } catch (SQLException e1) { 37. e1.printStackTrace(); 38. }
39. e.printStackTrace(); 40. }
41. return true; 42. } 代码贴士
getAutoCommit():该方法用于获取事务自动提交模式。
setAutoCommit():该方法用于设置事务的自动提交模式。 commit():该方法用于执行事务提交。
rollback ():该方法在事务执行失败时,执行回退操作。 5.getKucun()方法
该方法用于获取指定ID编号或名称的商品库存信息,它接收一个Item对象作参数,该对象中封装了商品的ID编号和商品名称信息,如果库存表中存在该商品的库存记录,就获取该记录并将记录中的数据封装到库存表的实体对象中,然后将该实体对象作为方法的返回值。关键代码如下: 例程14 代码位置:光盘\\TM\\01\\JXCManager\\src\\com\\lzw\\dao\\Dao.java
1. 2. 3. 4. 5. 6. 7. 8. 9.
//获取库存商品信息
public static TbKucun getKucun(Item item) {
String where = \ + item.getName() + \ if (item.getId() != null)
where = \ + item.getId() + \
ResultSet rs = findForResultSet(\+ where);
TbKucun kucun = new TbKucun(); try {
if (rs.next()) {
10. kucun.setId(rs.getString(\
11. kucun.setSpname(rs.getString(\ 12. kucun.setJc(rs.getString(\ 13. kucun.setBz(rs.getString(\ 14. kucun.setCd(rs.getString(\ 15. kucun.setDj(rs.getDouble(\ 16. kucun.setDw(rs.getString(\ 17. kucun.setGg(rs.getString(\ 18. kucun.setKcsl(rs.getInt(\ 19. }
20. } catch (SQLException e) { 21. e.printStackTrace(); 22. }
23. return kucun; 24. } 1.6.2 编写Item类
Item类是系统的公共类之一,主要用于封装和传递参数信息,这是典型命令模式的实现。在Dao类中经常使用该类作为方法参数;另外,在各个窗体界面中也经常使用该类作组件数据,其toString()方法将返回
name属性值,所以显示到各个组件上的内容就是Item类的对象所代表的商品、供应商或者客户等信息中的名称。定义该类的关键代码如下:
例程15 代码位置:光盘\\TM\\01\\JXCManager\\src\\internalFrame\\guanli\\Item.java
1. 2. 3. 4. 5. 6. 7. 8. 9.
public String id; //定义id属性 public String name; //定义名称属性
public String getId() { //定义暴露ID属性的方法 return id; }
public void setId(String id) { this.id = id; }
public String getName() { //定义暴露名称属性的方法
10. return name; 11. }
12. public void setName(String name) { 13. this.name = name; 14. }
15. public String toString() { //定义该类的字符串表现形式 16. return getName(); 17. } 18.
1.7 基础信息模块设计
基础信息模块用于管理企业进销存管理系统中的客户、商品和供应商信息,其功能主要是对这些基础信息进行添加、修改和删除。 1.7.1 基础信息模块概述
企业进销存管理系统中的基础信息模块主要包括客户管理、商品管理和供应商管理3部分。由于它们的实现方法基本相似,本节将以供应商管理部分为主,介绍基础信息模块对本系统的意义和实现的业务逻辑。 1.供应商添加
供应商添加功能主要负责为系统添加新的供应商记录。在企业进销存管理系统中,商品是主要的管理对象,而系统中所有的商品都由不同的供应商提供,这就需要把不同的供应商信息添加到系统中,在商品信息中会关联系统中对应的供应商信息。供应商添加功能的程序界面如图1.21所示。 2.供应商修改与删除
供应商的修改与删除功能主要用于维护系统中的供应商信息。在供应商的联系方式发生改变时,必须更新系统中的记录,以提供供应商的最新信息。另外,当不再与某家供应商合作时,需要从系统中删除供应商的记录信息。其程序运行界面如图1.22所示。