约束:
卫生院只审核只乡/镇的卫生室下的采购单
卫生局审核全市卫生室下的采购单
采用批量提交方法:
提交数据包括:yycgdid(采购单id)、审核结果 、审核意见
将页面提交数据传入action的:List yycgds中。
数据库操作:
更新采购单表yycgd{year}的状态为(3:审核通过、或4:审核不通过)及审核意见
Mapper
先查询出监督单位监管的地区。然后通过监督单位的地区和采购单状态字段去查询采购单。
select useryy.mc useryymc, yycgd.*, (select info from dictinfo where typecode='010' and dictcode=yycgd.zt)yycgdztmc from yycgd2015 yycgd,useryy where yycgd.useryyid = useryy.id and yycgd.zt='2' and useryy.dq like '%1.6.%'
Dao
<!-- 采购单查询列表 -->
<select id="findYycgdList" parameterType="yycg.business.pojo.vo.YycgdQueryVo" resultType="yycg.business.pojo.vo.YycgdCustom">
<!-- 分页头 -->
<include refid="yycg.base.commonSql.page_start" />
select
useryy.mc useryymc,
yycgd.*,
(select info from dictinfo where typecode='010' and
dictcode=yycgd.zt)yycgdztmc
from yycgd${businessyear} yycgd,useryy where yycgd.useryyid = useryy.id
<!-- 采购单本身查询条件 -->
<include refid="query_yycgd_where" />
<!-- 医院查询条件 -->
<include refid="yycg.base.dao.mapper.SysuserMapperCustom.query_useryy_where" />
order by yycgd.id desc
<!-- 分页尾部 -->
<include refid="yycg.base.commonSql.page_end" />
</select>
<select id="findYycgdCount" parameterType="yycg.business.pojo.vo.YycgdQueryVo" resultType="int">
select
count(*)
from yycgd${businessyear} yycgd,useryy where yycgd.useryyid = useryy.id
<!-- 采购单本身查询条件 -->
<include refid="query_yycgd_where" />
<!-- 医院查询条件 -->
<include refid="yycg.base.dao.mapper.SysuserMapperCustom.query_useryy_where" />
</select>
Service
// 采购单审核数据
// 采购单审核
@Override
public List<YycgdCustom> findCheckYycgdList(String year, String userjdid,
YycgdQueryVo yycgdQueryVo) throws Exception {
yycgdQueryVo = yycgdQueryVo != null ? yycgdQueryVo : new YycgdQueryVo();
// 采购单状态
String zt = "2";// 审核中
YycgdCustom yycgdCustom = yycgdQueryVo.getYycgdCustom();
if (yycgdCustom == null) {
yycgdCustom = new YycgdCustom();
}
yycgdCustom.setZt(zt);
yycgdQueryVo.setYycgdCustom(yycgdCustom);
// 监管单位管理地区
// 根据监管单位id查询监管单位
Userjd userjd = userjdMapper.selectByPrimaryKey(userjdid);
// 管理地区
String dq = userjd.getDq();
Useryy useryy = yycgdQueryVo.getUseryy();
useryy = useryy != null ? useryy : new Useryy();
// 设置查询条件管理地区
useryy.setDq(dq);
yycgdQueryVo.setUseryy(useryy);
// 设置年份
yycgdQueryVo.setBusinessyear(year);
return yycgdMapperCustom.findYycgdList(yycgdQueryVo);
}
// 采购单审核数据条数
@Override
public int findCheckYycgdCount(String year, String userjdid,
YycgdQueryVo yycgdQueryVo) throws Exception {
yycgdQueryVo = yycgdQueryVo != null ? yycgdQueryVo : new YycgdQueryVo();
// 采购单状态
String zt = "2";// 审核中
YycgdCustom yycgdCustom = yycgdQueryVo.getYycgdCustom();
if (yycgdCustom == null) {
yycgdCustom = new YycgdCustom();
}
yycgdCustom.setZt(zt);
yycgdQueryVo.setYycgdCustom(yycgdCustom);
// 监管单位管理地区
// 根据监管单位id查询监管单位
Userjd userjd = userjdMapper.selectByPrimaryKey(userjdid);
// 管理地区
String dq = userjd.getDq();
Useryy useryy = yycgdQueryVo.getUseryy();
useryy = useryy != null ? useryy : new Useryy();
// 设置查询条件管理地区
useryy.setDq(dq);
yycgdQueryVo.setUseryy(useryy);
// 设置年份
yycgdQueryVo.setBusinessyear(year);
return yycgdMapperCustom.findYycgdCount(yycgdQueryVo);
}
// 采购单审核提交
@Override
public void saveYycgdCheckStatus(String yycgdid, YycgdCustom yycgdCustom)
throws Exception {
// 采购单状态为审核中方可提交审核
// 采购单状态为未提交或审核不通过时方可提交
Yycgd yycgd = this.findYycgdById(yycgdid);
if (yycgd == null) {
// 抛出异常,提交的采购单在系统中不存在
ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE, 501,
null));
}
// 采购单状态
String zt = yycgd.getZt();
if (!zt.equals("2")) {
// 采购单只允许在审核中方可提交 审核
ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE, 514,
null));
}
// 审核结果(审核通过、审核不通过)必须选择
if (yycgdCustom == null
|| yycgdCustom.getZt() == null
|| (!yycgdCustom.getZt().equals("3") && !yycgdCustom.getZt()
.equals("4"))) {
// 审核结果选择的不正确
ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE, 513,
null));
}
// 年份
String businessyear = yycgdid.substring(0, 4);
Yycgd yycgd_update = new Yycgd();
yycgd_update.setId(yycgdid);
// 更新状态
yycgd_update.setZt(yycgdCustom.getZt());
// 更新审核时间
yycgd_update.setShtime(MyUtil.getNowDate());
// 更新审核意见
yycgd_update.setShyj(yycgdCustom.getShyj());
yycgd_update.setBusinessyear(businessyear);
yycgdMapper.updateByPrimaryKeySelective(yycgd_update);
// 采购明细数据聚合
if (yycgdCustom.getZt().equals("3")) {
// 如果审核通过进行数据聚合
List<YycgdmxCustom> list = findYycgdmxListByYycgdid(yycgdid, null);
// 将采购单明细记录插入到交易明细表中
// 取出采购单明细记录
for (YycgdmxCustom yycgdmxCustom : list) {
// 创建一个交易明细对象
Yybusiness yybusiness = new Yybusiness();
yybusiness.setBusinessyear(yycgdid.substring(0, 4));
yybusiness.setId(UUIDBuild.getUUID());
yybusiness.setYycgdid(yycgdid);
yybusiness.setYpxxid(yycgdmxCustom.getId());
yybusiness.setCgl(yycgdmxCustom.getCgl());
yybusiness.setCgje(yycgdmxCustom.getCgje());
yybusiness.setCgzt(yycgdmxCustom.getCgzt());
yybusiness.setUsergysid(yycgdmxCustom.getUsergysid());
yybusiness.setUseryyid(yycgdmxCustom.getUseryyid());
yybusiness.setZbjg(yycgdmxCustom.getZbjg());
yybusiness.setJyjg(yycgdmxCustom.getJyjg());
yybusinessMapper.insert(yybusiness);
}
}
}
action
// 采购单审核列表页面
@RequestMapping("/checkyycgdlist")
public String checkyycgdlist(Model model) throws Exception {
// 药品类别
List<Dictinfo> cgdztlist = systemConfigService
.findDictinfoByType("010");
model.addAttribute("cgdztlist", cgdztlist);
// 当前年份
model.addAttribute("year", MyUtil.get_YYYY(MyUtil.getDate()));
return "/business/cgd/checkYycgd";
}
// 采购单审核列表结果集,json
@RequestMapping("/checkyycgdlist_result")
public @ResponseBody
DataGridResultInfo checkyycgdlist_result(// HttpSession session,
ActiveUser activeUser, String year,// 年份
YycgdQueryVo yycgdQueryVo,// 查询条件
int page, int rows) throws Exception {
// 监管单位id
String userjdid = activeUser.getSysid();// 单位id
// 列表的总数
int total = cgdService
.findCheckYycgdCount(year, userjdid, yycgdQueryVo);
// 分页参数
PageQuery pageQuery = new PageQuery();
pageQuery.setPageParams(total, rows, page);
yycgdQueryVo.setPageQuery(pageQuery);// 设置分页参数
// 分页查询列表
List<YycgdCustom> list = cgdService.findCheckYycgdList(year, userjdid,
yycgdQueryVo);
DataGridResultInfo dataGridResultInfo = new DataGridResultInfo();
dataGridResultInfo.setTotal(total);
dataGridResultInfo.setRows(list);
return dataGridResultInfo;
}
// 采购单审核提交
@RequestMapping("/checkcgdsubmit")
public @ResponseBody
SubmitResultInfo checkcgdsubmit(YycgdQueryVo yycgdQueryVo, int[] indexs)
throws Exception {
List<YycgdCustom> list = yycgdQueryVo.getYycgdCustoms();
// 处理数据的总数
int count = indexs.length;
// 处理成功的数量
int count_success = 0;
// 处理失败的数量
int count_error = 0;
// 处理失败的原因
List<ResultInfo> msgs_error = new ArrayList<ResultInfo>();
for (int i = 0; i < count; i++) {
// 定义异常信息
ResultInfo resultInfo = null;
// 根据选中行的序号获取要处理的业务数据(单个)
YycgdCustom yycgdCustom = list.get(indexs[i]);
String yycgdid = yycgdCustom.getId();
try {
cgdService.saveYycgdCheckStatus(yycgdid, yycgdCustom);
} catch (Exception e) {
e.printStackTrace();
// 进行异常解析
if (e instanceof ExceptionResultInfo) {// 自定义异常
resultInfo = ((ExceptionResultInfo) e).getResultInfo();
} else {
resultInfo = ResultUtil.createFail(Config.MESSAGE, 900,
null);
}
}
if (resultInfo == null) {// 执行成功
count_success++;
} else {
count_error++;
// 记录失败的原因
msgs_error.add(resultInfo);
}
}
// 提示用户成功数量、失败数量、失败原因
return ResultUtil.createSubmitResult(// 并返回详细信息
ResultUtil.createSuccess(Config.MESSAGE, 907, new Object[] {
count_success, count_error }), msgs_error);
}