关于一个类里面两部分重复的代码怎么优化
2015-12-04 10:32
393 查看
如果你个方法里面有两部分相同的代码,只是个别参数不同而已,那么我们把相同的代码抽取出来作为另一个private方法,然后在原来的方法里面去调用就可以避免局部变量的问题。
public class DutyAutoWarningNotify extends TaskVO { /** * */ private static final long serialVersionUID = 4134338525795435287L; /** * {@inheritDoc} */ @Override public void execute() throws Exception { IMonCommonOperateBO monCommonOperateBO = SpringContextUtils.getBean("monCommonOperateBO", IMonCommonOperateBO.class); String s1=monCommonOperateBO.getDictionaryItemValue("IDD_MON_SCHEDULE", "IDI_SCHEDULE_TIME1"); String s2=monCommonOperateBO.getDictionaryItemValue("IDD_MON_SCHEDULE", "IDI_SCHEDULE_TIME2"); String s3=monCommonOperateBO.getDictionaryItemValue("IDD_MON_SCHEDULE", "IDI_SCHEDULE_TIME3"); String s4=monCommonOperateBO.getDictionaryItemValue("IDD_MON_SCHEDULE", "IDI_SCHEDULE_TIME4"); Date time1=new Date(System.currentTimeMillis()+Integer.parseInt(s1));//当前时间+50分钟 Date time2=new Date(System.currentTimeMillis()+Integer.parseInt(s2));//当前时间+70分钟 Date time3=new Date(System.currentTimeMillis()+Integer.parseInt(s3));//当前时间+24小时,提前一天通知的时间 Date time4=new Date(System.currentTimeMillis()+Integer.parseInt(s4));//当前时间+24小时,提前一天通知的时间 this.sendMessage(time1, time2); this.sendMessage(time3, time4); } private void sendMessage(Date startTime,Date endTime) throws Exception{ ISchDutyDetailBO schDutyDetailBO = SpringContextUtils.getBean("schDutyDetailBO", ISchDutyDetailBO.class); IMonCommonOperateBO monCommonOperateBO = SpringContextUtils.getBean("monCommonOperateBO", IMonCommonOperateBO.class); IUserBI userBI = SpringContextUtils.getBean("ext_baf_userBI", IUserBI.class); SchDutyDetailExample schExample = new SchDutyDetailExample(); SchDutyDetailExample.Criteria schCriteria = schExample.createCriteria(); StringBuffer sb = new StringBuffer(); sb.append("(T_SCH_DUTY_DETAIL .IS_NOTIFY = 'Y' OR EXISTS (SELECT 1 ").append("FROM t_sch_duty_table SC6 WHERE T_SCH_DUTY_DETAIL .DUTY_TABLE_ID = SC6.DUTY_TABLE_ID ") .append("AND SC6.IS_NOTIFY = 'Y'))"); String queryCondition=sb.toString(); schCriteria.andOtherCondition(queryCondition); schCriteria.andDutyStartTimeBetween(startTime, endTime); List<SchDutyDetail> schDutyDetails = schDutyDetailBO.selectByExample(schExample); // 查询到对应班次 for (SchDutyDetail schDutyDetail : schDutyDetails) { String userId=schDutyDetail.getDutyStaff(); String noticeObj=userBI.selectUserNameById(userId); if(noticeObj!=null){ String noticeType = MsgConstant.MSG_NOTICE_TYPE_MSG; // 通知类型 String noticeMode = MsgConstant.IMSG_NOTICE_MODE_SM; // 通知方式默认为短信 StringBuffer dealInfoStrBuff = new StringBuffer(); String time=DateFormat.getInstance().format(schDutyDetail.getDutyStartTime()); dealInfoStrBuff.append(noticeObj).append("你好,你在").append(schDutyDetail.getDutyDetailId().toString()).append("班表中有") .append(time).append("的班次,请提前准备,按时接班,谢谢。该提醒来自综调系统。"); String noticeContent = dealInfoStrBuff.toString(); // 通知内容 String[] noticeArgs={noticeType,noticeMode,noticeContent,"",}; UserVO userVO=userBI.selectUserByPrimaryKey(Constant.DEFAULT_USER); monCommonOperateBO.sendMessage(schDutyDetail.getDutyTableId(), schDutyDetail.getTemplateId(), "0000017", schDutyDetail.getDutyDetailId().toString(), noticeObj, DealConstants.OBJECTTYPE_BAF_E, userVO, noticeArgs); } } } }
相关文章推荐
- __FILE__,__LINE__,__DATE__,__TIME__,__FUNCTION__调试宏
- java 文件移动 常规四种方法 和利用FileCopyUtils.copy( , )方法
- Spring工作原理及其作用
- 写代码一定要注意边界问题,要考虑全面开始的边界以及结束的边界,已防止出现严重的错误。
- java学习笔记-设计模式14(策略模式)
- C/C++代码调试的几点建议
- java中小数的加减乘除
- C/C++代码调试的几点建议
- Java基础--Java语言介绍
- Java对象克隆(Clone)及Cloneable接口、Serializable接口的深入探讨
- C++问题-无法打开某个自定义源文件
- SpringMVC_参数绑定2
- 【python】smtp邮件发送
- python不用win32api获得windows日志的代码
- 基于CC2530的温湿度传感器和基于C#的应用界面设计
- Python的16个“坑”
- 【google M】开机SIM卡信息的初始化
- Java 多态总结
- C++11的多线程
- 知其然亦知其所以然-NSOperation并发编程