UNPKG

wistroni40-bnft

Version:

Benefit platform parameters publish job template

112 lines (96 loc) 2.59 kB
/** * 專案名稱: @wistroni40/bnft * 部門代號: ML8100 * 檔案說明: 效益使用範例 * @CREATE Fri Feb 05 2021 下午1:14:17 * @author Steve Y Lin * @contact Steve_Y_Lin@wistron.com #1342 * ----------------------------------------------------------------------------- * @NOTE */ import { BenefitConfigModel, BenefitQueryModel, Bnft, BnftTemplate } from '../src'; /** * ----------------------------------------------------------------------------- * Custom Benefit * ----------------------------------------------------------------------------- */ /** * 效益使用範例 */ 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]; } } /** * ----------------------------------------------------------------------------- * Configuration * ----------------------------------------------------------------------------- */ const configuration: BenefitConfigModel = { systemId: 'system_id', typeId: 'type_id', benefitType: 'direct', publishApi: 'http://publish-api-url/', benefitApi: 'http://benefit-api-url/', retry: 3, retryInterval: 1000, }; /** * ----------------------------------------------------------------------------- * Benefit * ----------------------------------------------------------------------------- */ const benefit = new Benefit(configuration); // 設定排程定時拋送 benefit.setSchedule('0 0 0 * * ? *'); // 直接拋送 benefit.execute(); // 監聽拋送結果 benefit.sendCompleted.subscribe(res => { if (res.error) { // TODO } else { // TODO } });