两个版本,哪个更好?(更具可读性,可维护性。。。。。。)
第一版本代码:
package nc.bs.scap.business;
import java.util.HashMap;
import java.util.Map;
import nc.bs.scap.abstractbusi.SCAPAbstractBusi;
import nc.bs.scap.backfill.SCAPOnceBackFillBill;
import nc.bs.trade.business.HYPubBO;
import nc.bs.yc.pub.BackFillBill;
import nc.vo.pub.AggregatedValueObject;
import nc.vo.pub.BusinessException;
import nc.vo.pub.compiler.PfParameterVO;
import nc.vo.pub.lang.UFBoolean;
import nc.vo.scap.trynotice.TrynoticeBVO;
import nc.vo.scap.tryrecord.TryrecordBVO;
import nc.vo.yc.utils.YCPubUtils;
/**
* 试用纪录单业务类
*
* @author limx
* @Description TODO
* @date 2011-4-10 上午09:38:47
*
*/
public class TryrecordBusi extends SCAPAbstractBusi {
@Override
public void approve(AggregatedValueObject aggVo, PfParameterVO vo) throws BusinessException {
super.approve(aggVo, vo);
backFillTryResult(aggVo, vo, true);// 回写试用结果
}
@Override
public void unApprove(AggregatedValueObject aggVo, PfParameterVO vo) throws BusinessException {
super.unApprove(aggVo, vo);
backFillTryResult(aggVo, vo, false);// 删除试用结果
}
/**
* 回写试用记录单的试用结果
*
* @param aggVo
* 聚合VO
* @param parameVo
* @param isApprove
* 审核和弃审开关
* @throws BusinessException
*/
public void backFillTryResult(AggregatedValueObject aggVo, PfParameterVO parameVo, boolean isApprove) throws BusinessException {
TryrecordBVO[] bodyVOs = (TryrecordBVO[]) aggVo.getChildrenVO();
Map<String, TryrecordBVO> backFillTryrecordBVOS = new HashMap<String, TryrecordBVO>();
for (TryrecordBVO tryrecodeSelectedBVO : bodyVOs) {
backFillTryrecordBVOS.put(tryrecodeSelectedBVO.getVlastbillrowid(), tryrecodeSelectedBVO);// 添加回写数据
}
if (!YCPubUtils.isEmpty(backFillTryrecordBVOS.keySet())) {
HYPubBO hyPubBO = new HYPubBO();
// 查询要进行回写的试用通知单表体记录
TrynoticeBVO[] trynoticeBVOS = (TrynoticeBVO[]) hyPubBO.queryByCondition(TrynoticeBVO.class, TrynoticeBVO.PK_TRYNOTICE_B + " in ("
+ YCPubUtils.getUnionSQLString(backFillTryrecordBVOS.keySet()) + ")");
for (TrynoticeBVO trynoticeBVO : trynoticeBVOS) {
TryrecordBVO tryrecodeSelectedBVO = backFillTryrecordBVOS.get(trynoticeBVO.getPk_trynotice_b());
if (isApprove) {
trynoticeBVO.setVtryresult(tryrecodeSelectedBVO.getVtryresult());// 审核回写
trynoticeBVO.setIstryfinish(UFBoolean.TRUE);
} else {
trynoticeBVO.setVtryresult(null);// 弃审回写
trynoticeBVO.setIstryfinish(null);
}
}
hyPubBO.updateAry(trynoticeBVOS);
}
}
/*
* 创建单据回写类
*/
@Override
protected BackFillBill createBackFill() throws BusinessException {
return new SCAPOnceBackFillBill();
}
}
重构后的代码:
package nc.bs.scap.business;
import java.util.HashMap;
import java.util.Map;
import nc.bs.scap.abstractbusi.SCAPAbstractBusi;
import nc.bs.scap.backfill.SCAPOnceBackFillBill;
import nc.bs.trade.business.HYPubBO;
import nc.bs.yc.pub.BackFillBill;
import nc.vo.pub.AggregatedValueObject;
import nc.vo.pub.BusinessException;
import nc.vo.pub.compiler.PfParameterVO;
import nc.vo.pub.lang.UFBoolean;
import nc.vo.scap.trynotice.TrynoticeBVO;
import nc.vo.scap.tryrecord.TryrecordBVO;
import nc.vo.yc.utils.YCPubUtils;
/**
* 试用纪录单业务类
*
* @author limx
* @Description TODO
* @date 2011-4-10 上午09:38:47
*
*/
public class TryrecordBusi extends SCAPAbstractBusi {
@Override
public void approve(AggregatedValueObject aggVo, PfParameterVO vo) throws BusinessException {
super.approve(aggVo, vo);
Map<String, String> tryResult = getTryResutl(aggVo);
TrynoticeBVO[] trynoticeBVOs = getTrynoticeBVOs(tryResult);
backFillTryResultWhenApprove(tryResult, trynoticeBVOs);
}
@Override
public void unApprove(AggregatedValueObject aggVo, PfParameterVO vo) throws BusinessException {
super.unApprove(aggVo, vo);
Map<String, String> tryResult = getTryResutl(aggVo);
TrynoticeBVO[] trynoticeBVOs = getTrynoticeBVOs(tryResult);
backFillTryResultWhenUnapprove(trynoticeBVOs);
}
/**
* 返回 map<上层单据行id,试用记录单的试用结果>
* @param aggVO
* @return
*/
private Map<String, String> getTryResutl(AggregatedValueObject aggVO) {
// 需要回写的试用结果
TryrecordBVO[] bodyVOs = (TryrecordBVO[])aggVO.getChildrenVO();
Map<String, String> tryResult = new HashMap<String, String>();
for(TryrecordBVO backFillTryResultBVO : bodyVOs) {
tryResult.put(backFillTryResultBVO.getVlastbillrowid(), (String)backFillTryResultBVO.getAttributeValue(TryrecordBVO.VTRYRESULT));
}
return tryResult;
}
/**
* 返回被参照的试用通知单表体
* @param tryResult
* @return
* @throws BusinessException
*/
private TrynoticeBVO[] getTrynoticeBVOs(Map<String, String> tryResult) throws BusinessException {
// 被参照的试用通知单
return (TrynoticeBVO[]) getHYPubBO().queryByCondition(TrynoticeBVO.class, TrynoticeBVO.PK_TRYNOTICE_B + " in (" +
YCPubUtils.getUnionSQLString(tryResult.keySet()) + ")");
}
/**
* 审核回写试用结果
* @param tryResult
* @param trynoticeBVOs
* @throws BusinessException
*/
private void backFillTryResultWhenApprove(Map<String, String> tryResult, TrynoticeBVO[] trynoticeBVOs) throws BusinessException {
for(TrynoticeBVO trynoticeBVO : trynoticeBVOs) {
trynoticeBVO.setVtryresult(tryResult.get(trynoticeBVO.getPk_trynotice_b()));
trynoticeBVO.setIstryfinish(UFBoolean.TRUE);
}
getHYPubBO().updateAry(trynoticeBVOs);
}
/**
* 弃审回写试用结果
* @param trynoticeBVOs
* @throws BusinessException
*/
private void backFillTryResultWhenUnapprove(TrynoticeBVO[] trynoticeBVOs) throws BusinessException {
for(TrynoticeBVO trynoticeBVO : trynoticeBVOs) {
trynoticeBVO.setVtryresult(null);
trynoticeBVO.setIstryfinish(null);
}
getHYPubBO().updateAry(trynoticeBVOs);
}
private HYPubBO hyPubBO;
private HYPubBO getHYPubBO() {
if(YCPubUtils.isEmpty(hyPubBO)) {
hyPubBO = new HYPubBO();
}
return hyPubBO;
}
/*
* 创建单据回写类
*/
@Override
protected BackFillBill createBackFill() throws BusinessException {
return new SCAPOnceBackFillBill();
}
}
分享到:
相关推荐
SQL 比对工具.rar SQL 比对工具,更好比较两个数据库的差异 SQL 比对工具,更好比较两个数据库的差异
内容详细介绍了如何安装多个CATIA版本的方法和详细步骤,图片和文字说明非常详细。照此方法可以安装喜欢的更多个版本。很完美,很漂亮,很简单。
内容概要:购物车系统,文件有两个版本,进行结算与支付功能 适用人群:面向python初学者 使用场景及目标:帮助初学者更好的掌握从面向过程向面向对象过渡。
用汇编实现两个四位十六进制的数相加。得出的结果能更好的实现汇编的应用。
压缩包里面是我收集的四个关于时间管理的PPT,如以下两个PPT: (1)时间管理与工作统筹技巧:此章可以帮你更好地去使用时间,更高效更顺利地完成工作!这样我们就可以有多余的时间去其他一些自己想做的事情(如旅游...
[“幼儿秩序敏感期”分两个阶段-对孩子很重要-家长这样应对更好]秩序敏感期的三个阶段.docx
在A/B测试中,我们可以分析用户数据,以了解哪个版本的用户体验更好。 以下是一些A/B测试的用户数据分析思路: 查看转化率: 转化率是衡量用户完成特定目标的百分比,例如购买产品或订阅服务。比较两个版本的网站...
eclipse和idea所需要使用的jdk,压缩包里包括jdk1.8.0_131和jdk1502两个版本。JDK 是 Java Development ToolKit 的简称,也就是 Java 开发工具包。JDK 是整个 Java 的核心,包括 Java 运行环境(Java Runtime ...
两个CADODatabse class and the CADORecordset class,这是为了在C++中更好地进行ADO数据库操作 主要的类及其函数罗列如下: The CADODatabase Class CADODatabase Open Execute GetRecordsAffected ...
在A/B测试中,我们可以分析用户数据,以了解哪个版本的用户体验更好。 以下是一些A/B测试的用户数据分析思路: 查看转化率: 转化率是衡量用户完成特定目标的百分比,例如购买产品或订阅服务。比较两个版本的网站...
在 C 语言中,二维数组是一种非常常用的数据结构,它可以用来存储具有两个维度的数据。 对于二维数组的初始化,我们可以采取多种方法,这取决于你的具体需求和数组的大小。以 下是一些二维数组初始化的例子和解释,...
两个JS+PHP裁切图片实例,超经典
作为设计模式的简单应用。提取游戏的图片素材、初始化、数据刷新、碰撞检测等公共部分,用一套程序做两个游戏,后续逐步完善功能。欢迎同学自己做出更好的功能。
2,视频中两个摄像头之间的距离是6cm,你可以根据你摄像头的型号,来选择合适的距离来达到最好的效果。 3,在进行测距之前,首先需要对摄像头进行标定,那么如何标定呢? 在stdafx.h中把"#define CALIBRATION 0"改成...
已知两个已经排好序(非减序)的序列X和Y 其中X的长度为m Y长度为n 现在请你用分治算法 找出X和Y的第k小的数 算法时间复杂度为O max{logm logn} 此题请勿采用将序列X和Y合并找第k小的O m+n 的一般方法 要充分利用...
中记录,详见个人主页,可根据关键字 “深入浅出【GraphSAGE】原理:GCN、GAT都有哪些缺陷 | 深刻解析 邻居采样与聚合的完整过程 | 重采样和欠采样的由来 | Cora数据集的两个版本说明 | 详解Cora数据集”进行搜索...
1 企业QQ系统 2 网络通讯版QQ 通过源码从而可以更好的了解socket通讯技术.
2005年,Sun等提出了两个完美前向安全的E-mail协议,尽管从短密钥保护的有效性来看这两个协议是安全的,但它们都...为了克服此缺点,对此两个协议作了改进,使得改进后的协议具有认证性,从而有更好的安全性和实用性。
想学习Python的人都会有一个困惑,那就是Python目前有两个版本Python2和Python3,Python2与Python3有何区别,两个版本该学习哪个呢? python3 和 python2是不兼容的,而且差异比较大,python3是不向下兼容的,但是绝...
剑指offer:合并两个排序的链表,Python实现 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表...找到两个链表中头节点值相对更小的链表,将其作为主链表,第二个链表中的元素