eServiceCloud 实现模型‐ProductHaul - CassiniLaw/KnowledgeBase GitHub Wiki
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
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
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
操作员输入在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()