医院创建采购单时,需要先填写采购单基本信息,基本信息填写完成后,再填写采购单明细信息。
内容如下:
采购单基本信息包括:采购年份、采购单名称、建单时间、提交时间、联系人、联系电话、备注、采购单状态。
1.2.1 dao
使用逆向工程向采购单基本信息表插入一条记录。
1.2.1.1 采购单编号生成
采购单编号命名规则:4 位年+6位流水号
6位流水号:使用oracle序列完成。
采购单编号序列按年划分,
序列名:yycgdbm+4位年份
Sql:
createsequence YYCGDBM2014
minvalue1
maxvalue999999
startwith101060
incrementby1
cache20;
序列由动态表的存储过程自动创建。
使用序列生成采购单号:
创建一个自定义mapper。
<!-- 采购单号生成 -->
<select id="getYycgdBm"parameterType="string">
select '${value}' || yycgdbm${value}.nextvalbm from dual
</select>
Mapper.java
// 采购单的编号生成通过oracle数据库的序列生成
public StringgetYycgdBm(String year) throws Exception;
1.2.2 service
接口功能:创建采购单
接口参数:医院id、4位年份、采购单信息
接口实现:
向采购单基本信息表插入一条记录
采购单状态默认为“未提交”
调用getYycgdBm 每次插入只调用一次因为每次调用值都会加1
public classCgdServiceImpl implements CgdService {
@Autowired
private YycgdMapper yycgdMapper;
@Autowired
private YycgdMapperCustom yycgdMapperCustom;
@Autowired
private SystemConfigService systemConfigService;
@Autowired
private UseryyMapper useryyMapper;
@Autowired
private YpxxMapper ypxxMapper;
@Autowired
private YycgdmxMapper yycgdmxMapper;
// 创建新的采购单
@Override
public StringinsertYycgd(String useryyid, String year,
YycgdCustomyycgdCustom) throwsException {
// yycgdMapperCustom.getYycgdBm(year)每次访问的值都会不一样
Stringbm = yycgdMapperCustom.getYycgdBm(year);
// 目的是方便操作采购单
yycgdCustom.setId(bm);
// 采购单的编号
yycgdCustom.setBm(bm);
// 创建采购单的医院
yycgdCustom.setUseryyid(useryyid);
// 创建时间
yycgdCustom.setCjtime(new Date());
// 采购单状态默认为未提交
yycgdCustom.setZt("1");
// 设置年份,为了操作动态表
yycgdCustom.setBusinessyear(year);
yycgdMapper.insert(yycgdCustom);
return bm;
}
1.2.3 action
两个方法:
创建采购单页面方法:
生成采购单名称:医院名称+当前时间+“采购单”
采购年份:当前年份
创建采购单基本信息保存方法:
创建采购单基本信息成功后,重定向到采购单修改页面(在修改页面可以填写采购单明细信息)。
为了调试创建采购单基本信息保存方法,写一个采购单修改页面方法
// 创建采购单基本信息页面
@RequestMapping("/addcgd")
public Stringaddcgd(HttpSession session, Model model) throws Exception {
// 获取当前用户
ActiveUseractiveUser = (ActiveUser) session
.getAttribute(Config.ACTIVEUSER_KEY);
Stringsysmc = activeUser.getSysmc();
// 生成采购单名称:医院名称+当前时间+“采购单”
Stringyycgdmc = sysmc + MyUtil.getDate() + "采购单";
model.addAttribute("yycgdmc",yycgdmc);
// 采购年份工具类
Stringyear = MyUtil.get_YYYY(MyUtil.getDate());
model.addAttribute("year", year);
return "/business/cgd/addcgd";
}
// 创建采购单的基本信息保存方法
@RequestMapping("/addcgdsubmit")
public @ResponseBody
SubmitResultInfoaddcgdsubmit(HttpSession session, String year,
YycgdQueryVoyycgdQueryVo) throwsException {
ActiveUseractiveUser = (ActiveUser) session
.getAttribute(Config.ACTIVEUSER_KEY);
Stringuseryyid = activeUser.getSysid();
// 从用户中获取单位id
String yycgdid = cgdService.insertYycgd(useryyid, year,
yycgdQueryVo.getYycgdCustom());
ResultInforesultInfo = ResultUtil.createSuccess(Config.MESSAGE, 906,
null);
// 获取采购单id,将id通过ResultInfo中sysdata传到页面
resultInfo.getSysdata().put("yycgdid",yycgdid);
return ResultUtil.createSubmitResult(resultInfo);
}
// 采购单修改页面方法
@RequestMapping("/editcgd")
public String editcgd(Modelmodel, String id) throws Exception {
// 采购状态
List<Dictinfo>cgztlist = systemConfigService.findDictinfoByType("011");
List<Dictinfo>jyztlist = systemConfigService.findDictinfoByType("003");
// 药品类别
List<Dictinfo>lblist = systemConfigService.findDictinfoByType("001");
model.addAttribute("lblist",lblist);
model.addAttribute("cgztlist",cgztlist);
model.addAttribute("jyztlist",jyztlist);
// 调用service获取采购单信息
YycgdCustomyycgdCustom = cgdService.findYycgdById(id);
model.addAttribute("yycgd",yycgdCustom);
return "/business/cgd/editcgd";
}
1.2.4 action跳转到采购单修改
如果采购基本信息保存成功,在页面执行window.location='${baseurl}cgd/editcgd.action?id='+yycgdid;
Yycgdid(采购单id),通过采购单基本信息保存结果resultInfo传到页面。
在ResultInfo中定义sysdata的map结构,用于action向页面传递业务参数。
修改采购单基本信息保存方法:
// 创建采购单的基本信息保存方法
@RequestMapping("/addcgdsubmit")
public @ResponseBody
SubmitResultInfoaddcgdsubmit(HttpSession session, String year,
YycgdQueryVoyycgdQueryVo) throwsException {
ActiveUseractiveUser = (ActiveUser) session
.getAttribute(Config.ACTIVEUSER_KEY);
Stringuseryyid = activeUser.getSysid();
// 从用户中获取单位id
String yycgdid = cgdService.insertYycgd(useryyid,year,
yycgdQueryVo.getYycgdCustom());
ResultInforesultInfo = ResultUtil.createSuccess(Config.MESSAGE, 906,
null);
// 获取采购单id,将id通过ResultInfo中sysdata传到页面
resultInfo.getSysdata().put("yycgdid",yycgdid);
return ResultUtil.createSubmitResult(resultInfo);
}
修改采购单基本信息保存页面,在添加回调方法中转向采购单修改页面: