您的位置:首页 > 编程语言

关于一个类里面两部分重复的代码怎么优化

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);
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: