package area_graph import ( "eta/eta_api/models/data_manage" "fmt" ) type NullDealStrategy interface { Deal(tmpConfig data_manage.AreaExtraConf, edbDataList []*data_manage.ChartEdbInfoMapping, standardIndexMap map[string]*data_manage.EdbDataList, startDate string, endDate string) (err error) } func CreateStrategy(dealWay int) (NullDealStrategy, error) { switch dealWay { case 1: return &InterpolateStrategy{}, nil case 2: return &FillWithPreviousStrategy{}, nil case 3: return &FillWithNextStrategy{}, nil case 4: return &SetToZeroStrategy{}, nil case 5: return &DeleteDateStrategy{}, nil default: return nil, fmt.Errorf("未知的空值处理类型: %d", dealWay) } } type NullDealContext struct { strategy NullDealStrategy } func (c *NullDealContext) SetStrategy(strategy NullDealStrategy) { c.strategy = strategy } func (c *NullDealContext) ExecuteStrategy(tmpConfig data_manage.AreaExtraConf, edbDataList []*data_manage.ChartEdbInfoMapping, standardIndexMap map[string]*data_manage.EdbDataList) error { return c.strategy.Deal(tmpConfig, edbDataList, standardIndexMap, "", "") }