index.ts 4.25 KB
export const genTriggerData = (triggerData) => {
  const {
    triggerType,
    entityId,
    type1,
    type2,
    device,
    detail,
    predicate,
    operationType,
    triggered,
    schedule,
  } = triggerData;
  const mapPredicate = predicate.map((item) => {
    return {
      key: {
        type: type1,
        key: type2,
      },
      valueType: operationType,
      value: null,
      predicate: {
        type: operationType,
        operation: item.operation,
        value: {
          defaultValue: item.value,
          userValue: null,
          dynamicValue: null,
        },
      },
    };
  });
  return {
    triggerType,
    entityType: device,
    entityId: entityId?.length ? entityId : null,
    triggerCondition: {
      alarmDetails: detail,
      condition: {
        condition: mapPredicate,
        spec: {
          type: triggered,
          // unit: 'SECONDS',
          // predicate: {
          //   defaultValue: 30,
          //   userValue: null,
          //   dynamicValue: null,
          // },
        },
      },
      schedule: {
        type: schedule,
        // timezone: 'Asia/Shanghai',
        // daysOfWeek: [2, 3],
        // startsOn: 8700000,
        // endsOn: 30300000,
      },
    },
  };
};

export const genConditionData = (actionData) => {
  const {
    triggerType,
    entityId,
    type1,
    type2,
    device,
    detail,
    predicate,
    operationType,
    triggered,
    schedule,
  } = actionData;
  const mapPredicate = predicate.map((item) => {
    return {
      key: {
        type: type1,
        key: type2,
      },
      valueType: operationType,
      value: null,
      predicate: {
        type: operationType,
        operation: item.operation,
        value: {
          defaultValue: item.value,
          userValue: null,
          dynamicValue: null,
        },
      },
    };
  });
  return {
    triggerType,
    entityType: device,
    entityId: entityId?.length ? entityId : null,
    triggerCondition: {
      alarmDetails: detail,
      condition: {
        condition: mapPredicate,
        spec: {
          type: triggered,
          // unit: 'SECONDS',
          // predicate: {
          //   defaultValue: 30,
          //   userValue: null,
          //   dynamicValue: null,
          // },
        },
      },
      schedule: {
        type: schedule,
        // timezone: 'Asia/Shanghai',
        // daysOfWeek: [2, 3],
        // startsOn: 8700000,
        // endsOn: 30300000,
      },
    },
  };
};

export const genActionData = (conditionData) => {
  const {
    alarm_config,
    alarm_level,
    detail,
    device,
    doContext,
    operationType,
    outTarget,
    predicate,
    triggerType,
    triggered,
    type1,
    type2,
    schedule,
    entityId,
    deviceId,
  } = conditionData;

  const mapPredicate = predicate?.map((item) => {
    return {
      key: {
        type: type1,
        key: type2,
      },
      valueType: operationType,
      value: null,
      predicate: {
        type: operationType,
        operation: item.operation,
        value: {
          defaultValue: item.value,
          userValue: null,
          dynamicValue: null,
        },
      },
    };
  });
  console.log(doContext);
  return [
    {
      alarmProfileId: alarm_config,
      outTarget,
      entityType: device,
      entityId: entityId?.length ? entityId : null,
      deviceId,
      doContext: mapPredicate?.length
        ? {
            alarmLevel: alarm_level,
            clearRule: {
              triggerType,
              triggerCondition: {
                alarmDetails: detail,
                condition: {
                  condition: mapPredicate,
                  spec: {
                    type: triggered,
                    // unit: 'SECONDS',
                    // predicate: {
                    //   defaultValue: 30,
                    //   userValue: null,
                    //   dynamicValue: null,
                    // },
                  },
                },
                schedule: {
                  type: schedule,
                  // timezone: 'Asia/Shanghai',
                  // daysOfWeek: [2, 3],
                  // startsOn: 8700000,
                  // endsOn: 30300000,
                },
              },
            },
          }
        : doContext,
    },
  ];
};