1.1.7 • Published 3 years ago

wistroni40-bnft v1.1.7

Weekly downloads
148
License
ISC
Repository
github
Last release
3 years ago

wistroni40-bnft

Install

npm i wistroni40-bnft --save

Table of Contents

Quickstart

繼承效益範本,實作getBenefitParams方法

benefit.ts

import { BnftTemplate } from 'wistroni40-bnft';

/**
 * 效益使用範例
 */
class Benefit extends BnftTemplate {
  /**
   * 需要計算的廠別,若設為undefined則表示所有廠別都要計算
   */
  protected enabledPlant = ['plantA'];

  /**
   * @param config 效益設定檔
   */
  constructor(public config: BenefitConfigModel) {
    super(config);
  }

  /**
   * 取得效益參數
   *
   * @method public
   * @param condition 效益查詢條件
   * @return 回傳效益參數
   */
  public async getBenefitParams(
    condition: BenefitQueryModel,
  ): Promise<Bnft.Param[]> {
    const { site, plantCode } = condition;
    const idlCost = await this.findLatestLaborCost(
      site,
      plantCode,
      'idl',
    ).toPromise();

    const analysisParams: Bnft.Param = {
      name: 'time_analysis',
      value: 2,
      type: 'CONST',
    };

    const idlCostParams: Bnft.Param = {
      name: 'idl_pay_hr',
      value: idlCost ? idlCost.cost : 0,
      type: 'VAR',
    };

    return [analysisParams, idlCostParams];
  }
}

實例效益,使用setSchedule設定計算排成;或使用execute直接拋送效益

index.ts

import { Benefit, BenefitConfigModel } from 'wistroni40-bnft';

// 效益設定
const configuration: BenefitConfigModel = {
  systemId: 'system_id',
  typeId: 'type_id',
  benefitType: 'direct',
  publishApi: 'http://publish-api-url/',
  benefitApi: 'http://benefit-api-url/',
  retry: 3,
};

const benefit = new Benefit(configuration);

// 設定排程定時拋送
benefit.setSchedule('0 0 0 * * ? *');

// 直接拋送
benefit.execute();

// 監聽拋送結果
benefit.sendCompleted.subscribe(res => {
  if (res.error) {
    // TODO
  } else {
    // TODO
  }
});

Full Example

Feature

  • 提供效益計算實作範本
  • 效益上拋具備重拋及保存機制
  • 範本中埋入 API,可執行重新計算

API

BnftTemplate

Abstract Class,效益範本

constructor

BnftTemplate 的建構值

ParameterTypeRequiredDefaultDescription
configBenefitConfigModelRequiredundefined效益配置,配置說明可參考BenefitConfigModel

Example:

const config = {
  systemId: 'mytest',
  typeId: 'cost_idl',
  benefitType: 'direct',
  publishApi: 'http://publish-api-url/',
  benefitApi: 'http://benefit-api-url/',
  retry: 3,
};

Properties

config

TypeRequiredDefaultDescription
BenefitConfigModelRequiredundefined效益設定檔

Methods

setSchedule

設定效益計算排程

ParameterTypeRequiredDefaultDescription
cronstringRequiredundefined排程
returnsBnftTemplateRequiredundefined回傳物件本身

getBenefitParams

取得效益參數

ParameterTypeRequiredDefaultDescription
conditionBenefitQueryModelRequiredundefined效益查詢條件,配置說明可參考BenefitConfigModel
returnsPromise<Bnft.Param[]>Requiredundefined回傳效益參數

processBenefitParams

處理效益參數

ParameterTypeRequiredDefaultDescription
responseObservable<HttpResponse<ActivedSystemModel[]>>Requiredundefined查詢激活的效益系統
timestampDateOptionalundefined查詢開始時間
returnsObservable<ProducePayloadModel<Bnft.BenefitSaving>>Requiredundefined回傳處理後效益參數

execute

執行效益參數撈取

ParameterTypeRequiredDefaultDescription
timestampDateOptionalundefined查詢開始時間
returnsObservable<ProducePayloadModel<Bnft.BenefitSaving>>Requiredundefined回傳效益參數上拋資料

send

將效益參數上拋

ParameterTypeRequiredDefaultDescription
payloadProducePayloadModel<Bnft.BenefitSaving>Requiredundefined效益參數
sendablebooleanOptionaltrue執行結果是否上拋

findLatestLaborCost

取得最新的 IDL 或 ID 人員工時

ParameterTypeRequiredDefaultDescription
sitestringRequiredundefinedSite
plantCodestringRequiredundefined廠別代碼
laborType'dl' | 'idl'Requiredundefined人員類別(IDL or DL)
returnsObservable<BenefitLatestLaborCostResponse>Requiredundefined回傳最新的 IDL 或 ID 人員工時

setHttp

設定自定義的 HTTP

ParameterTypeRequiredDefaultDescription
httpHttpAdapterRequiredundefined自定義 HTTP 請求
returnsBnftTemplateRequiredundefined回傳物件本身

BenefitConfigModel

Interface,效益範本設定檔資料模型

Properties

dev

TypeRequiredDefaultDescription
booleanOptionalfalse開發模式

systemId

TypeRequiredDefaultDescription
stringRequiredundefined效益系統 ID

typeId

TypeRequiredDefaultDescription
stringRequiredundefined效益類型 ID

benefitType

TypeRequiredDefaultDescription
BenefitTypeRequiredundefined效益類型

publishApi

TypeRequiredDefaultDescription
stringRequiredundefined要拋送參數的 API 路徑

benefitApi

TypeRequiredDefaultDescription
stringRequiredundefined效益的 API 路徑

retry

TypeRequiredDefaultDescription
numberOptionalundefined重拋嘗試次數

Resend API Usage

執行效益計算 Job,執行成功,可看見以下 LOG,並在瀏覽器輸 入http://localhost:3000/,可開啟 Swagger API Explorer

[2021-02-17T10:30:24.562] [INFO] api - Listen api port 3000

重新上拋特定時間的所有效益

curl -X POST "http://localhost:3000/benefit/send?timestamp=1609430400000" -H  "accept: application/json"
ParamterTypeRequiredDefaultDescription
timestampquery: numberRequiredundefined重新上拋的時間

重新上拋特定效益

curl -X POST "http://localhost:3000/specific/benefit/send?systemId=mytest&typeId=cost_idl2&timestamp=1609430400000" -H  "accept: application/json"
ParamterTypeRequiredDefaultDescription
systemIdquery: stringRequiredundefined系統 ID
typeIdquery: stringRequiredundefined效益 ID
timestampquery: numberRequiredundefined重新上拋的時間

重新上拋特定時間區間內的所有效益

curl -X POST "http://localhost:3000/benefit/send/timestamps" -H  "accept: application/json" -H  "Content-Type: application/json" -d "[1609430400000,1609516800000]"
ParamterTypeRequiredDefaultDescription
bodynumber[]Requiredundefined重新上拋的時間區間

重新上拋特定時間區間內的特定效益

curl -X POST "http://localhost:3000/specific/benefit/send/timestamps?systemId=mytest&typeId=cost_idl2" -H  "accept: application/json" -H  "Content-Type: application/json" -d "[1609430400000]"
ParamterTypeRequiredDefaultDescription
systemIdquery: stringRequiredundefined系統 ID
typeIdquery: stringRequiredundefined效益 ID
bodynumber[]Requiredundefined重新上拋的時間區間

重拋上拋失敗的效益

curl -X POST "http://localhost:3000/benefit/backup" -H  "accept: application/json"
1.1.7

3 years ago

1.1.6

3 years ago

1.1.5

3 years ago

1.1.1

3 years ago

1.1.0

3 years ago

1.0.9

3 years ago

1.1.4

3 years ago

1.1.3

3 years ago

1.1.2

3 years ago

1.0.8

3 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago