parse.js 2.11 KB
Newer Older
崔佳豪's avatar
崔佳豪 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
import logger from '@wisdom-utils/utils/lib/logger';
import { formatTime } from './format';

const parseMessageCase = messString => {
  const attr = messString.infoContent.split('\\n');
  const caseContent = {
    caseType: attr[0].split('】')[0].split('【')[1],
    flowName: attr[0].split('】')[1],
    nodeName: attr[1],
    content: attr[2],
  };
  return caseContent;
};

const parseMessageAlarm = messString => {
  const attr = messString.infoContent.split('\\n');
  const valueField = attr[2]?.split('【')?.[0] ?? '';
  const alarmContent = {
    title: attr[0],
    alarmType: attr[0].split('】')[0].split('【')[1],
    deviceCode: '',
    alarmDevice: attr[0].split('】')[1],
    alarmContent: attr[1],
    alarmThreshold: valueField.includes(' / ') ? valueField.split('/')[1].trim(' ') : '',
    alarmValue: valueField.includes(' / ')
      ? valueField.split('/')[0].trim(' ')
      : valueField.includes(':')
      ? valueField.split(':')[1]
      : '',
  };
  return alarmContent;
};

const parseMessageNotice = messString => {
  const attr = messString.infoContent.split('\\n');
  const noticeContent = {
    noticeType: attr[0].split('】')[0].split('【')[1],
    noticeTitle: attr[0].split('】')[1],
    noticeContent: attr[1],
  };
  return noticeContent;
};



/**
 * 解析1.0消息成消息对象格式
 * @param {*} infoClasses 
 * @param {*} messageContent 
 * @returns 
 */
const parseContentToJSON = (infoClasses, messageContent) => {
  let messageBody = messageContent;
  try {
    switch (infoClasses) {
      case 'alarmType':
        messageBody = parseMessageAlarm(messageContent);
        break;
      case 'caseType':
        messageBody = parseMessageCase(messageContent);
        break;
      case 'sysType':
        messageBody = parseMessageNotice(messageContent);
        break;
      case 'unknown':
        messageBody = parseMessageNotice(messageContent);
        break;
      default:
        break;
    }
  } catch (e) {
    logger.info(`1.0消息通知解析消息内容出错:${e.message}`, '消息对象:', messageBody);
  } finally {
  }

  return messageBody;
};
export default parseContentToJSON