eServiceCloud 实现模型‐ProductHaul - CassiniLaw/KnowledgeBase GitHub Wiki

ProductHaul 实现

类图

classDiagram
direction LR
namespace Pages.ProductHaul._ViewModel {
    class ProductHaulViewModel {
        +string ServicePoint
        +int ID
        +string Crew
        +string From
        +string BinFrom
        +string To
        +string BinTo
        +string Client
        +int CallSheet
        +string Blend
        +string Amount
        +string Status
        +Rig Rig
    }
}

namespace Pages.ProductHaul {
class Index.razor {
    <<razor>>
}

class SfGrid {
	<<div>>
	+string @ref="_grid" 
	+string TValue="ProductHaulViewModel" 
	+string DataSource="@_dataSource"    
	+string Height="100%"
	+string AllowGrouping="true"
	+string AllowSelection="false"
	+string AllowTextWrap="true"
	+string AllowSorting="true"
	+string GridLines="GridLine.Both"
}

class GridColumns {
	<<div>>
}

class GridColumn {
	<<div>>
	+string Field="@nameof(ProductHaulViewModel.Crew)" 
	+string HeaderText="Crew"
}


class Index  {
    <<partial>>
    -List~ShippingLoadSheet~ _filteredProductHaulLoad
    -List~ShippingLoadSheet~ _salesProductHaulLoad
    -List~ShippingLoadSheet~ _ProductHaulLoadProjects
    -IEnumerable<int> _currentServicePoints
    +IProductHaulRepository ProductHaulRepository
    +IOptions<SalesOptions> SalesOptions
    +IServicePointFilterService ServicePointFilterService
    -ILogger<Index> Log
    -Guid _refreshGuid
    #IAutoRefreshDataService AutoRefreshDataService

    -Task FiltersUpdatedAsync(IEnumerable~ShippingLoadSheet~ filteredSource)
    #Task OnAfterRenderAsync(bool firstRender)
    -Task ServicePointFilterChangedEventAsync(IEnumerable<int> ids)
    -Task PopulateDataAsync(IEnumerable<int> servicePointIds)
    -void RefreshCurrentServicePoints(IEnumerable<int> servicePointIds, out bool hasChanges)
    -Task RefreshDataSourceAsync()
}
   class ProductHaulFilters   {
        <<partial>>
        
        +IEnumerable~ShippingLoadSheet~ DataSource
        +EventCallback~IEnumerable~ShippingLoadSheet~~ OnFilterApplied
        -Filters _filters    
        -List<Rig> Rigs
        #Task OnInitializedAsync()
        -void PopulateData()
        +Task SetParametersAsync(ParameterView parameters)
        +Task ApplyFiltersAsync()
}

class ProductHaulFilters.razor {
    <<razor>>
    -SfMultiSelect<int[], Rig> _multiSelectRigs
    -Task SelectedRigsChanged(int[] value)
}
class SfMultiSelect {
    <<div>>
    -string CssClass="multiSelect"
    -string TValue="int[]"
    -string TItem="Rig"
    -string AllowFiltering="true"
    -string DataSource="@Rigs"
    -string Value="@_filters.SelectedRigs?.ToArray()"
    -string Placeholder="All Rigs"
    -string ValueChanged="@SelectedRigsChanged"
    -string @ref="@_multiSelectRigs"
}
class MultiSelectFieldSettings {
    <<div>>
    Text="@nameof(Rig.Name)" 
    Value="@nameof(Rig.Id)"
}
}

SfMultiSelect *--> MultiSelectFieldSettings
ProductHaulFilters.razor *--> SfMultiSelect : DataSource="@Rigs", Value="@_filters.SelectedRigs?.ToArray()", Placeholder="All Crews", ValueChanged="@SelectedRigsChanged"
ProductHaulFilters.razor *--> SfMultiSelect : DataSource="@Rigs", Value="@_filters.SelectedRigs?.ToArray()", Placeholder="All Crews", ValueChanged="@SelectedRigsChanged"
ProductHaulFilters.razor *--> ProductHaulFilters

Index.razor *--> Index
Index.razor *--> ProductHaulFilters.razor
Index.razor *--> SfGrid
SfGrid *--> GridColumns
GridColumns *--> GridColumn : Field="@nameof(ProductHaulViewModel.Crew)", HeaderText="Crew"
GridColumns *--> GridColumn : Field="@nameof(ProductHaulViewModel.From)", HeaderText="From"
GridColumns *--> GridColumn : Field="@nameof(ProductHaulViewModel.BinFrom)", HeaderText="Bin # (From)"
GridColumns *--> GridColumn : Field="@nameof(ProductHaulViewModel.To)", HeaderText="To"
GridColumns *--> GridColumn : Field="@nameof(ProductHaulViewModel.BinTo)", HeaderText="Bin # (To)"
GridColumns *--> GridColumn : Field="@nameof(ProductHaulViewModel.Client)", HeaderText="Client"
GridColumns *--> GridColumn : Field="@nameof(ProductHaulViewModel.CallSheet)", HeaderText="CallSheet#"
GridColumns *--> GridColumn : Field="@nameof(ProductHaulViewModel.Blend)"  HeaderText="Blend"
GridColumns *--> GridColumn : Field="@nameof(ProductHaulViewModel.Amount)", HeaderText="Amount"
GridColumns *--> GridColumn : Field="@nameof(ProductHaulViewModel.Status)", HeaderText="Status" 

Index --> "*" ProductHaulViewModel : _dataSource

Loading
classDiagram
  namespace Pages.Views {
    class DistrictFilters {
        +checkbox[] Area 
        +checkbox[] Districts
        +Click(checkbox)
    }
    class ProductHaulFilters {
        +textbox CallSheet
        +textbox Rig
        +textbox Crew
        +textbox Client
        +textbox Blend
        +textbox Status
        +TextChanged(textbox)
    }
    class ProductHaulPage {
    }
    class ProductHaulPanel {
        +LoadProductHaul(DistrictFilters, ProductHaulFilters)
    }
    class ProductHaulGrid {
        +column BlendRequestNumber
        +column BlendName
        +column RigName
        +column FromLocationName
        +column ToLocationName
        +column FromBinNumber
        +column ToBinNumber
        +column CallSheetNumber
        +column Crew
        +column ClientName
        +column BlendStatus
        +column HualType
        +ColumnHeaderClick(column)
        +CellClick(cell)
    }
    class ShipLoadSheetView {
        +button Print
        +Show()
        +ButtonClick(button)
    }
    class PrintShipLoadSheetView {
    }
  }

  namespace Pages.ViewModels {
    class ProductHaulPanel.ProductHaulViewModel {
        +string BlendRequestNumber
        +string BlendName
        +string RigName
        +string FromLocationName
        +string ToLocationName
        +string FromBinNumber
        +string ToBinNumber
        +string CallSheetNumber
        +string Crew
        +string ClientName
        +string BlendStatus
        +string HualType
    }
  }

ProductHaulPage *--> DistrictFilters
ProductHaulPage *--> ProductHaulFilters
ProductHaulPage *--> ProductHaulPanel
ProductHaulPanel *--> ProductHaulGrid
ProductHaulPage *-->  ShipLoadSheetView
ProductHaulPage ..> PrintShipLoadSheetView

ProductHaulPanel o--> "*" ProductHaulPanel.ProductHaulViewModel

namespace Repositories {
    class ProductHaulRepository {
    }
}

ProductHaulPage *--> ProductHaulRepository

Loading
classDiagram
namespace Repositories {
    class ProductHaulRepository {
    }
}

ProductHaulPage *--> ProductHaulRepository

namespace Models {
    class Area {
        +string Name
    }
    class District {
        +string Name
    }
    class ClientCompany {
        +string Name
    }
    class Employee {
        +string FirstName
        +string LastName
    }
    
    class CallSheet {
        +int Number
    }
    
    class Rig {
        +string Name
    }
    class Blend {
        +string Name
    }
    class BulkPlantStatus {
        +string Name
    }
    class ProductHaulLoad {
        +int Number
        +decimal Amount
    }
    class ProductHaulLoadStatus {
        +string Name
    }
    class ProductHaulType {
        +string Name
    }
    class ProductHaul {
        +int Id
    }
    
    class BinInformation {

    }
    class ShippingLoadSheet {
        +int Id
    }
}

ProductHaulRepository ..> ProductHaulLoad
ProductHaulRepository ..> ProductHaul
ProductHaulRepository ..> Rig
ProductHaulRepository ..> CallSheet
ProductHaulRepository  ..> ProductHaulLoadStatus
ProductHaulRepository ..> Blend
ProductHaulRepository ..> ClientCompany
ProductHaulRepository ..> Employee

Loading

交互图

操作员输入在ProductHaulFilters中输入CallSheet#,触发Grid列出含有CallSheet#的过程。其他的条件应该是类似过程

sequenceDiagram
  actor Operator
  box Pages.Views
    participant ProductHaulFilters
    participant ProductHaulGrid
    participant ProductHaulPage
  end	

  box Pages.ViewModels
    participant ProductHaulViewModel
  end

box Repositories
    participant ProductHaulReposity
end

box Services
    participant CallSheetService
    participant ProductHualService
    participant ProductHualLoadService
end

Operator ->> ProductHaulFilters : TextChange(CallSheet)
ProductHaulFilters ->> ProductHaulPage : ProductHaulFilters_TextChanged(CallSheet)
ProductHaulPage ->> ProductHaulReposity : FindCallSheetsByNumber()
ProductHaulReposity ->> CallSheetService : FindAllByNumber()

ProductHaulReposity ->> ProductHaulReposity : FindProductHaulsByCallSheet(callSheetList)
ProductHaulReposity ->> ProductHualService : FindAllByNumber()

ProductHaulReposity ->> ProductHaulReposity : FindProductHaulLoadsByCallSheet(callSheetList)
ProductHaulReposity ->> ProductHualLoadService : FindAllByNumber()

ProductHaulPage ->> ProductHaulViewModel : 
ProductHaulPage ->> ProductHaulPage : FillGrid()

Loading
⚠️ **GitHub.com Fallback** ⚠️