/**
  * 保存断电告警单信息
  *
  * @param oeDispatchTask OeDispatchTask 输入的断电告警派单信息
  * @return String 断电告警单编号
  */
 private String saveOeOutageAlarm(OeDispatchTask oeDispatchTask) {
   OeOutageAlarm oeOutageAlarm;
   if (StringUtils.isBlank(oeDispatchTask.getAlarmId())) {
     return "";
   }
   oeOutageAlarm = oeOutageAlarmDao.get(oeDispatchTask.getAlarmId());
   oeOutageAlarmDao.save(oeOutageAlarm);
   return oeOutageAlarm.getId();
 }
 /**
  * 执行供电保障派单工作流
  *
  * @param oeDispatchTask OeDispatchTask 输入的断电告警派单信息
  * @param smParameter SmParameter 短信发送参数
  */
 private void doWorkflowStart(OeDispatchTask oeDispatchTask, SmParameter smParameter) {
   ProMockPo taskPi = new ProMockPo();
   taskPi.setBzid(oeDispatchTask.getId());
   taskPi.setUserId(oeDispatchTask.getCurrentProcessUserId());
   String userName = super.getUserName(oeDispatchTask.getCurrentProcessUserId());
   taskPi.setUserName(userName);
   taskPi.setDealGroup(oeDispatchTask.getNextProcessOrgId());
   String orgName = super.getOrgName(oeDispatchTask.getNextProcessOrgId());
   taskPi.setDealGroupName(orgName);
   super.getElectricitySecurityWorkflowService().sendTaskTwoSteps(taskPi, smParameter);
 }
 /**
  * 获取派单短信发送参数
  *
  * @param oeDispatchTask OeDispatchTask 输入的断电告警派单信息
  * @return SmParameter 短信发送参数
  */
 private SmParameter getSmParameter(OeDispatchTask oeDispatchTask) {
   String simId = super.getOrgTel(oeDispatchTask.getNextProcessOrgId());
   String[] contentParameters = new String[] {oeDispatchTask.getTitle()};
   SmParameter parameter =
       SmParameter.getInstance(ELECTRICTITY_XML_FILE_ID, SEND_MSG_ID, simId, contentParameters);
   parameter.setWrittenDb(true);
   parameter.setBusinessType(SysConstant.DICTIONARY_FORMITEM_BUSINESSTYPE_C31);
   parameter.setHandleLimit(oeDispatchTask.getHandleLimit());
   parameter.setWorkorderId(oeDispatchTask.getId());
   parameter.setWorkorderTitle(oeDispatchTask.getTitle());
   parameter.setWorkorderType(SysConstant.OE_DISPATCHTASK_FLOW_TYPE);
   return parameter;
 }
 /**
  * 根据断电告警派单编号读取断电告警派单详细信息
  *
  * @param id String 断电告警派单编号
  * @return OeDispatchTask 断电告警派单详细信息
  */
 @Transactional(readOnly = true)
 @Override
 public OeDispatchTask viewOeDispatchTask(String id) {
   OeDispatchTask oeDispatchTask = oeDispatchTaskDao.get(id);
   String orgName = super.getOrgName(oeDispatchTask.getMaintenanceId());
   oeDispatchTask.setOrgName(orgName);
   String createrName = super.getUserName(oeDispatchTask.getCreator());
   oeDispatchTask.setCreaterName(createrName);
   String resourceName = super.getResourceName(oeDispatchTask);
   oeDispatchTask.setStationName(resourceName);
   return oeDispatchTask;
 }
 /**
  * 断电告警派单
  *
  * @param oeDispatchTask OeDispatchTask 输入的断电告警派单信息
  * @param userInfo UserInfo 当前登录用户信息
  */
 @Override
 public void save(OeDispatchTask oeDispatchTask, UserInfo userInfo) {
   String alarmId = saveOeOutageAlarm(oeDispatchTask);
   if (OeDispatchTask.IS_SUBMITED.equals(oeDispatchTask.getIsSubmited())) {
     oeDispatchTask.setState(OeDispatchTask.WAIT_SCHEDULED_STATE);
   } else {
     oeDispatchTask.setState(OeDispatchTask.WAIT_DISPATCHED_STATE);
   }
   if (StringUtils.isBlank(oeDispatchTask.getId())) {
     oeDispatchTask.setId(null);
   }
   oeDispatchTask.setAlarmId(alarmId);
   oeDispatchTask.setCreator(userInfo.getPersonId());
   oeDispatchTask.setCreateDate(new Date());
   oeDispatchTask.setCurrentProcessUserId(userInfo.getPersonId());
   oeDispatchTask.setNextProcessOrgId(oeDispatchTask.getMaintenanceId());
   String taskCode =
       super.commonOrderCodeService.generatorWorkOrderCode(
           userInfo.getRegionId(),
           SysConstant.DICTIONARY_FORMITEM_BUSINESSTYPE_C31,
           SysConstant.OE_DISPATCHTASK_FLOW_TYPE);
   if (StringUtils.isBlank(oeDispatchTask.getTaskCode())) {
     oeDispatchTask.setTaskCode(taskCode);
   }
   oeDispatchTaskDao.save(oeDispatchTask);
   if (OeDispatchTask.IS_SUBMITED.equals(oeDispatchTask.getIsSubmited())) {
     SmParameter smParameter = getSmParameter(oeDispatchTask);
     doWorkflowStart(oeDispatchTask, smParameter);
   }
 }