Sanjel Domain Model - Sanjel-Energy-Services/eService_WorkItems GitHub Wiki
classDiagram
class Employee
class BonusPosition
Employee "1..*" --> "0..1"BonusPosition
classDiagram
class JobDesign {
<<Program>>
}
class JobDesignPumpingJobSection
class ServicePoint
class JobType
class RigJob
class Rig
class BinInformation {
BlendChemical
Quantity
WorkingServicePoint
}
class Bin
RigJob-->Rig
RigJob..>JobDesignPumpingJobSection
JobDesign "1"*-->"1..*" JobDesignPumpingJobSection
RigJob-->JobType
JobDesignPumpingJobSection-->JobType
RigJob-->ServicePoint
Rig "1" <-- "0..*" BinInformation
BinInformation "1"-->"1" Bin
- JobDesign: Entity is renamed for concept Program to avoid potential naming conflict with system reserved name
- JobDesginPumpingJobSection: It contains information as per Job Type. It will provide the information for each Job (RigJob or EstimateJob)
classDiagram
class JobDesign {
<<Program>>
+ProgramId
+ProgramRevision
}
class JobDesignPumpingJobSection
class JobDesignBlendSection
class CallSheetBlendSection
class BlendSection {
+Id
+BlendCategory
+NeedTest
+Yield
+SackWeight
+MixWater
}
class CallSheet{
+Id
}
class BlendChemical {
+IsAirborneHarzard
+NeedFlush
+Yield
}
class RigJob {
+CallSheetNumber
+JobDateTime
+ClientRpresentative
+ServicePoint
+JobType
+Rig
WellLocation
}
class BatchRequest {
<<ProductHaulLoad>>
+ProgramId
+CallSheetId
+BlendCategory
+BlendSectionId
+BaseBlendWeight
+TotalBlendWeight
}
class BinInformation {
+PodIndex
}
class Bin
class BulkPlant {
<<Rig>>
}
class Customer
class BlendCut
class LabSample
class BinLoadHistory
BlendSection<|--JobDesignBlendSection
BlendSection<|--CallSheetBlendSection
RigJob-->Rig
CallSheet..>JobDesignPumpingJobSection
RigJob<-->CallSheet : equivalence
CallSheet "1"*-->"1..*" CallSheetBlendSection: Need these blend
JobDesign "1"*-->"1..*" JobDesignPumpingJobSection: Need these blend
JobDesignPumpingJobSection "1"*-->"1..*" JobDesignBlendSection
Rig "1" <-- "0..*" BinInformation
BulkPlant --|> Rig
BinInformation "*"-->"1" Bin
BatchRequest --> BlendChemical
BlendChemical..>BlendSection : Gerenerated From
CallSheet <.. BatchRequest
BatchRequest --> BulkPlant : Blended By
BatchRequest-->BinInformation : Load To
Customer<--RigJob
BatchRequest"1..*" --> "1"BlendSection: Mixed in batches
BatchRequest"1" <-- "1..*"BlendCut
BlendCut"1" <-- "1..*"BlendSample
LabSample "1"-->"1"BlendSample
BinLoadHistory ..> BinInformation
classDiagram
class Bin
class ProductHaul
class BatchRequest {
<<ProductHaulLoad>>
+ BlendTestingStatus
}
class RigJobSanjelCrewSection
class RigJobThirdPartyCrewSection
class SanjelCrewSchedule
class ThirdPartyCrewSchedule
class UnitSchedule
class WorkerSchedule
class RigJob {
+ ServicePoint
}
class SanjelCrew
class ThirdPartyCrew
class RigJobCrewSection
class Employee
class TruckUnit
class ShippingLoadSheet {
+ Rig
+ CallSheetNumber
+ Client
+ ClientRep
+ Destination
+ BlendDescription
+ BlendShippingStatus
+ IsGoWithCrew
}
class PodLoad {
+ PodIndex
+ LoadAmount
}
class BlendUnloadSheet {
+Weight
}
class BinInformation {
+BatchRequestId
}
class Rig
class BulkPlant
ProductHaul"0..1"<--"1..*" BatchRequest
SanjelCrew o-- TruckUnit
SanjelCrew o-- Employee
RigJobCrewSection "0..*" -->"0..1"RigJob
RigJobCrewSection "0..*" -->"0..1"ProductHaul
RigJobThirdPartyCrewSection "1"<--"1"ThirdPartyCrewSchedule
RigJobSanjelCrewSection "1..*"-->"1"SanjelCrew
RigJobThirdPartyCrewSection "1..*" -->"1"ThirdPartyCrew
RigJobCrewSection<|--RigJobSanjelCrewSection
RigJobCrewSection<|--RigJobThirdPartyCrewSection
UnitSchedule"1..*"-->"1"TruckUnit
WorkerSchedule"1..*"-->"1"Employee
SanjelCrewSchedule *--> UnitSchedule
SanjelCrewSchedule *--> WorkerSchedule
BatchRequest"Destination"-->"0..1"BinInformation
ProductHaul *--> ShippingLoadSheet
ProductHaul *--> PodLoad
PodLoad --> ShippingLoadSheet
ShippingLoadSheet"SourceStorage"-->"0..1"BinInformation
ShippingLoadSheet *-- BlendUnloadSheet
ShippingLoadSheet --> BatchRequest
BlendUnloadSheet "DestinationStorage"-->BinInformation
BinInformation -->BatchRequest
RigJob"1..*"-->"1"Rig
BulkPlant --|> Rig
BinInformation"*"-->Rig
BinInformation-->Bin
classDiagram
class ServicePoint
class Rig
class BinInformation {
BlendChemical
Quantity
WorkingServicePoint
PodIndex
Capacity
LastProductHaulLoadId
BlendTestingStatus
BinStatus
Quatity
Volume
}
class Bin{
PodCount
}
class BlendChemical
class ProductHaulLoad {
<<BlendRequest>>
Id
BlendTestingStatus
IsAirborneHazard
}
Rig "1" <-- "0..*" BinInformation: Working In
BinInformation "*"-->"1" Bin: Per Pod
BinInformation --> BlendChemical: Contains
BinInformation-->ServicePoint: Assign To
ProductHaulLoad-->BlendChemical: Load To Bin
BinInformation..>ProductHaulLoad
classDiagram
class RigJobSanjelCrewSection
class RigJobThirdPartyCrewSection
class SanjelCrewSchedule
class ThirdPartyCrewSchedule
class UnitSchedule
class WorkerSchedule
class RigJob
class SanjelCrew
class ThirdPartyCrew
class RigJobCrewSection
class Employee
class TruckUnit
class ProductHaul
class RotationTemplate
class ShippingLoadSheet
SanjelCrew o-- TruckUnit
SanjelCrew o-- Employee
RigJobCrewSection "0..*" -->"0..1"RigJob
RigJobCrewSection "0..*" -->"0..1"ProductHaul
RigJobSanjelCrewSection" 1"<--"1"SanjelCrewSchedule
RigJobThirdPartyCrewSection "1"<--"1"ThirdPartyCrewSchedule
RigJobSanjelCrewSection "1..*"-->"1"SanjelCrew
RigJobThirdPartyCrewSection "1..*" -->"1"ThirdPartyCrew
RigJobCrewSection<|--RigJobSanjelCrewSection
RigJobCrewSection<|--RigJobThirdPartyCrewSection
UnitSchedule"1..*"-->"1"TruckUnit
WorkerSchedule"1..*"-->"1"Employee
SanjelCrewSchedule *--> UnitSchedule
SanjelCrewSchedule *--> WorkerSchedule
WorkerSchedule-->"0..1"RotationTemplate
ProductHaul "1" *--> ShippingLoadSheet
stateDiagram-V2
state has_next_Load_Requested <<choice>>
state will_be_off_duty <<choice>>
state is_bulker_loaded <<choice>>
OffDuty-->LoadRequested: Product Haul is assigend
LoadRequested-->Called: Crew is good to go, call Driver
Called--> is_bulker_loaded: Is bulker loaded?
is_bulker_loaded --> Loading: No
is_bulker_loaded --> Loaded: Yes
state OnDuty {
Enroute-->OnLocation: Crew is on location
OnLocation-->OnWayIn: Crew is on way in
OnWayIn-->Returned: Crew arrives bulk plant
has_next_Load_Requested-->Loading: Yes
Returned-->will_be_off_duty: Will crew be off duty?
has_next_Load_Requested-->Returned: No
will_be_off_duty-->has_next_Load_Requested:No, has next product haul scheduled?
Loading-->Loaded: Bulker is loaded
Loaded-->Enroute: Crew leaves bulk plant
}
will_be_off_duty-->OffDuty: Yes
OffDuty-->Down: Set crew down
stateDiagram-v2
[*]-->Scheduled
Scheduled-->Loaded:BPAVS has Loaded the bulker
Loaded-->InProgress:Crew assignemnt is set Enroute
InProgress-->OnLocation: Set as OnLocation on either RigBoard or DRB
OnLocation-->[*]
Scheduled-->[Deleted]:Canceled
Loaded-->[Deleted]:Canceled
stateDiagram-v2
[*]-->Scheduled
Scheduled-->Loading:Blend is loading to the bulker
Loading-->Loaded: Blend has Loaded in the bulker
Loaded-->EnRoute:Crew assignemnt is set Enroute while depature on DRB
EnRoute-->OnLocation:Set as OnLocation on either RigBoard or DRB
OnLocation-->OnWayIn:Set as OnWayIn on DRB
OnWayIn-->Returned:Set as Returened on DRB while return
Returned-->NextAssignment: If next haul available,
Returned-->LogoffDuty: Set as OffDuty
Scheduled-->Removed: Assignment is Canceled.
Loading-->Removed: Assignment is Canceled.
Loaded-->Removed: Assignment is Canceled.
classDiagram
class SalesProject {
- ClientCompany: ClientCompany
- District: ServicePoint
- ServiceLIne: ServiceLine
- Rig: Rig
- Area: string
- StartTime: DateTime
- EndTime: DateTime
- ProgramId: string
- WellCount: int
- StringCount: int
- CmtStringCount: int
- Frequency: int
- EstimatedRevenue: double
- SalesRepresentative: Emplyee
- Comments: string
- Status: SalesProjectStatus
- ApprovalStatus: SalesProjectApporvalStaus
- SpecialtyProducts: List~SalesSpecialtyProduct~
- DrillDays: int
}
class SalesProjectStatus {
- Bid
- Potential
- SecondCall
- Won
- Lost
}
<<Enum>> SalesProjectStatus
class SalesProjectApporvalStaus {
- Draft
- Pending
- Approved
- Complete
}
<<Enum>> SalesProjectApporvalStaus
class DrillOrder {
- CementingOrders: List~JobOrder~
- Ordinal: int
- WellCount: int
- ProgramId: string
}
class JobOrder{
- JobType: JobType
- EsitmateRevenue: double
- Ordinal: int
}
class SalesSpecialtyProduct {
- Product: Product
}
SalesProject-->SalesProjectApporvalStaus
SalesProject-->SalesProjectStatus
SalesProject *--> DrillOrder
DrillOrder *--> JobOrder
SalesProject *-->SalesSpecialtyProduct
TruckUnit master data contains all vehichles in Sanjel, they are categorized by main type and sub type. Truck Units are named in certain naming convention which is consistent today.
Category | Main Type | Main Type Id | Sub Type | Sub Type Id | Naming |
---|---|---|---|---|---|
Pumper Trailer | ROLLING STOCK TRAILER | 2 | SCM Twin | 205 | 445### |
B-train | ROLLING STOCK TRAILER | 2 | B-Train | 15 | 446###L |
Bulker Trailer | ROLLING STOCK TRAILER | 2 | Cement Bulk Transpor | 101 | 446### |
B-train | ROLLING STOCK TRAILER | 2 | B-Train - Pup | 280 | 446###P |
Pumper Tractor | ROLLING STOCK TRACTOR | 1 | Tandem - Tractor | 276 | 745### |
Bulker Trailer | ROLLING STOCK BODY JOB | 5 | Cement Bulk Transpor | 61 | 746501 |
Bulker Tractor | ROLLING STOCK TRACTOR | 1 | Tandem - Tractor | 276 | 746### |
Pumper | ROLLING STOCK BODY JOB | 5 | C & A | 62 | 740### |
Pumper | ROLLING STOCK BODY JOB | 5 | SCM Single | 238 | 740### |
Pickup | LIGHT DUTY VEHICLES | 4 | 1/2 Ton | 3/4 Ton | 1 Ton | 93 | 94 | 95 | 20#### |
Bulker Trailer | ROLLING STOCK TRAILER | 2 | 4000 Porta Bulker | 27 | 449### |
Pumper | ROLLING STOCK BODY JOB | 5 | Low Rate Pump | 71 | |
Pumper | ROLLING STOCK TRAILER | 2 | SCM Twin HHP | 288 | |
Pumper | FIELD SUPPORT EQUIPMENT | 3 | Other Support Equipm | 291 |
public enum EServiceEntityStatus
{
[EnumMember] [Description("Empty")] Empty = 0x0,
[EnumMember] [Description("Ready")] Ready = 0x1,
[EnumMember] [Description("In Progress")] InProgress = 0x2,
[EnumMember] [Description("Transmitted")] Transmitted = 0x3,
[EnumMember] [Description("Canceled")] Canceled = 0x4,
[EnumMember] [Description("Locked")] Locked = 0x5,
[EnumMember] [Description("In Route")] InRoute = 0x6,
[EnumMember] [Description("Assembled")] Assembled = 0x7,
[EnumMember] [Description("Received")] Received = 0x8,
[EnumMember] [Description("PreTransmitted")] PreTransmitted = 0x9,
[EnumMember] [Description("Deleted")] Deleted = 0xA,
[EnumMember] [Description("Pending")] Pending = 0xB,
[EnumMember] [Description("Confirmed")] Confirmed = 0xC,
[EnumMember] [Description("Scheduled")] Scheduled = 0xD,
[EnumMember] [Description("Dispatched")] Dispatched = 0xE,
[EnumMember] [Description("Completed")] Completed = 0xF,
[EnumMember] [Description("Alerted")] Alerted = 0x10,
[EnumMember] [Description("Expired")] Expired = 0x11,
[EnumMember] [Description("Awaiting Approval")] AwaitingApproval = 0x200,
[EnumMember] [Description("Approving")] Approving = 0x400,
[EnumMember] [Description("Approved")] Approved = 0x800,
[EnumMember] [Description("Exception")] Exception = 0x1000,
[EnumMember] [Description("Succeed")] Succeed = 0x2000,
[EnumMember] [Description("Failed")] Failed = 0x4000,
}
public enum JobLifeStatus
{
[EnumMember]
[Description("None")]
None = 0,
[EnumMember]
[Description("Alerted")]
Alerted = 1,
[EnumMember]
[Description("Pending")]
Pending = 2,
[EnumMember]
[Description("Confirmed")]
Confirmed = 3,
[EnumMember]
[Description("Scheduled")]
Scheduled = 4,
[EnumMember]
[Description("Dispatched")]
Dispatched = 5,
[EnumMember]
[Description("Canceled")]
Canceled = 6,
[EnumMember]
[Description("InProgress")]
InProgress = 7,
[EnumMember]
[Description("Completed")]
Completed = 8,
[EnumMember]
[Description("Deleted")]
Deleted = 9,
}
public enum ProductHaulStatus
{
[EnumMember]
[Description("Empty")]
Empty = 0,
[EnumMember]
[Description("Pending")]
Pending = 1,
[EnumMember]
[Description("Scheduled")]
Scheduled = 2,
[EnumMember]
[Description("In Progress")]
InProgress = 3,
[EnumMember]
[Description("On Location")]
OnLocation = 4,
[EnumMember]
[Description("Loading")]
Loading = 5,
[EnumMember]
[Description("Loaded")]
Loaded = 6,
[EnumMember]
[Description("Returned")]
Returned = 7,
}
public enum ProductHaulLoadStatus
{
[EnumMember]
[Description("Empty")]
Empty = 0,
[EnumMember]
[Description("Scheduled")]
Scheduled = 1,
[EnumMember]
[Description("OnLocation")]
OnLocation = 2,
[EnumMember]
[Description("Blending")]
Blending = 3,
[EnumMember]
[Description("BlendCompleted")]
BlendCompleted = 4,
[EnumMember]
[Description("Loaded")]
Loaded = 5,
[EnumMember]
[Description("HaulScheduled")]
HaulScheduled = 6,
[EnumMember]
[Description("Stored")]
Stored = 7,
[EnumMember]
[Description("JobCanceled")]
JobCanceled = 8,
[EnumMember]
[Description("Recycled")]
Recycled = 9,
[EnumMember]
[Description("FaultBlend")]
FaultBlend = 10,
[EnumMember]
[Description("GoodToUse")]
GoodToUse = 11,
[EnumMember]
[Description("Reblended")]
Reblended = 12,
[EnumMember]
[Description("Ready")]
Ready = 13,
[EnumMember]
[Description("PartialHaulScheduled")]
PartialHaulScheduled = 14,
[EnumMember]
[Description("BpoConfirmed")]
BpoConfirmed = 15,
[EnumMember]
[Description("BlendingCanCommence")]
BlendingCanCommence = 16,
public enum ShippingStatus
{
[EnumMember]
[Description("Empty")]
Empty = 0,
[EnumMember]
[Description("Scheduled")]
Scheduled = 1,
[EnumMember]
[Description("Loaded")]
Loaded = 2,
[EnumMember]
[Description("OnLocation")]
OnLocation = 3,
}
public enum RigJobCrewSectionStatus
{
[EnumMember]
[Description("Assigned")]
Assigned = 1,
[EnumMember]
[Description("Scheduled")]
Scheduled = 2,
[EnumMember]
[Description("Removed")]
Removed = 3,
[EnumMember]
[Description("Called")]
Called = 4,
[EnumMember]
[Description("Log On Duty")]
LogOnDuty = 5,
[EnumMember]
[Description("Log Off Duty")]
LogOffDuty = 6,
[EnumMember]
[Description("Loading")]
Loading = 7,
[EnumMember]
[Description("Loaded")]
Loaded = 8,
[EnumMember]
[Description("En Route")]
EnRoute = 9,
[EnumMember]
[Description("On Location")]
OnLocation = 10,
[EnumMember]
[Description("On Way In")]
OnWayIn = 11,
[EnumMember]
[Description("Returned")]
Returned = 12,
}
public enum BulkerCrewStatus
{
[EnumMember]
[Description("None")]
None = 0,
[EnumMember]
[Description("Off Duty")]
OffDuty = 1,
[EnumMember]
[Description("En Route")]
EnRoute = 2,
[EnumMember]
[Description("Called")]
Called = 3,
[EnumMember]
[Description("On Way In")]
OnWayIn = 4,
[EnumMember]
[Description("GTG")]
GoodToGo = 5,
[EnumMember]
[Description("Load Requested")]
LoadRequested = 6,
[EnumMember]
[Description("Down")]
Down = 7,
[EnumMember]
[Description("On Location")]
OnLocation = 8,
[EnumMember]
[Description("Returned")]
Returned = 9,
[EnumMember]
[Description("Loaded")]
Loaded = 10,
[EnumMember]
[Description("Loading")]
Loading = 11,
}
public enum BlendShippingStatus
{
[EnumMember]
[Description("Empty")]
Empty = 0,
[EnumMember]
[Description("HaulScheduled")]
HaulScheduled = 1,
[EnumMember]
[Description("ParitialHaulScheduled")]
ParitialHaulScheduled = 2,
[EnumMember]
[Description("OnLocation")]
OnLocation = 3,
}
中文翻译
classDiagram
class Employee
class BonusPosition
Employee "1..*" --> "0..1"BonusPosition
classDiagram
class JobDesign {
<<Program>>
}
class JobDesignPumpingJobSection
class ServicePoint
class JobType
class RigJob
class Rig
class BinInformation {
BlendChemical
Quantity
WorkingServicePoint
}
class Bin
RigJob-->Rig
RigJob..>JobDesignPumpingJobSection
JobDesign "1"*-->"1..*" JobDesignPumpingJobSection
RigJob-->JobType
JobDesignPumpingJobSection-->JobType
RigJob-->ServicePoint
Rig "1" <-- "0..*" BinInformation
BinInformation "1"-->"1" Bin
- JobDesign: 实体被重命名为Program概念,以避免与系统保留名称的潜在命名冲突
- JobDesginPumpingJobSection: 根据作业类型包含信息。它将为每个作业(RigJob或EstimateJob)提供信息
classDiagram
class JobDesign {
<<Program>>
+ProgramId
+ProgramRevision
}
class JobDesignPumpingJobSection
class JobDesignBlendSection
class CallSheetBlendSection
class BlendSection {
+Id
+BlendCategory
+NeedTest
+Yield
+SackWeight
+MixWater
}
class CallSheet{
+Id
}
class BlendChemical {
+IsAirborneHarzard
+NeedFlush
+Yield
}
class RigJob {
+CallSheetNumber
+JobDateTime
+ClientRpresentative
+ServicePoint
+JobType
+Rig
WellLocation
}
class BatchRequest {
<<ProductHaulLoad>>
+ProgramId
+CallSheetId
+BlendCategory
+BlendSectionId
+BaseBlendWeight
+TotalBlendWeight
}
class BinInformation {
+PodIndex
}
class Bin
class BulkPlant {
<<Rig>>
}
class Customer
class BlendCut
class LabSample
class BinLoadHistory
BlendSection<|--JobDesignBlendSection
BlendSection<|--CallSheetBlendSection
RigJob-->Rig
CallSheet..>JobDesignPumpingJobSection
RigJob<-->CallSheet : 等价
CallSheet "1"*-->"1..*" CallSheetBlendSection: 需要这些搅拌
JobDesign "1"*-->"1..*" JobDesignPumpingJobSection: 需要这些搅拌
JobDesignPumpingJobSection "1"*-->"1..*" JobDesignBlendSection
Rig "1" <-- "0..*" BinInformation
BulkPlant --|> Rig
BinInformation "*"-->"1" Bin
BatchRequest --> BlendChemical
BlendChemical..>BlendSection : 由此生成
CallSheet <.. BatchRequest
BatchRequest --> BulkPlant : 由此搅拌
BatchRequest-->BinInformation : 加载到
Customer<--RigJob
BatchRequest"1..*" --> "1"BlendSection: 分批混合
BatchRequest"1" <-- "1..*"BlendCut
BlendCut"1" <-- "1..*"BlendSample
LabSample "1"-->"1"BlendSample
BinLoadHistory ..> BinInformation
classDiagram
class Bin
class ProductHaul
class BatchRequest {
<<ProductHaulLoad>>
+ BlendTestingStatus
}
class RigJobSanjelCrewSection
class RigJobThirdPartyCrewSection
class SanjelCrewSchedule
class ThirdPartyCrewSchedule
class UnitSchedule
class WorkerSchedule
class RigJob {
+ ServicePoint
}
class SanjelCrew
class ThirdPartyCrew
class RigJobCrewSection
class Employee
class TruckUnit
class ShippingLoadSheet {
+ Rig
+ CallSheetNumber
+ Client
+ ClientRep
+ Destination
+ BlendDescription
+ BlendShippingStatus
+ IsGoWithCrew
}
class PodLoad {
+ PodIndex
+ LoadAmount
}
class BlendUnloadSheet {
+Weight
}
class BinInformation {
+BatchRequestId
}
class Rig
class BulkPlant
ProductHaul"0..1"<--"1..*" BatchRequest
SanjelCrew o-- TruckUnit
SanjelCrew o-- Employee
RigJobCrewSection "0..*" -->"0..1"RigJob
RigJobCrewSection "0..*" -->"0..1"ProductHaul
RigJobThirdPartyCrewSection "1"<--"1"ThirdPartyCrewSchedule
RigJobSanjelCrewSection "1..*"-->"1"SanjelCrew
RigJobThirdPartyCrewSection "1..*" -->"1"ThirdPartyCrew
RigJobCrewSection<|--RigJobSanjelCrewSection
RigJobCrewSection<|--RigJobThirdPartyCrewSection
UnitSchedule"1..*"-->"1"TruckUnit
WorkerSchedule"1..*"-->"1"Employee
SanjelCrewSchedule *--> UnitSchedule
SanjelCrewSchedule *--> WorkerSchedule
BatchRequest"Destination"-->"0..1"BinInformation
ProductHaul *--> ShippingLoadSheet
ProductHaul *--> PodLoad
PodLoad --> ShippingLoadSheet
ShippingLoadSheet"SourceStorage"-->"0..1"BinInformation
ShippingLoadSheet *-- BlendUnloadSheet
ShippingLoadSheet --> BatchRequest
BlendUnloadSheet "DestinationStorage"-->BinInformation
BinInformation -->BatchRequest
RigJob"1..*"-->"1"Rig
BulkPlant --|> Rig
BinInformation"*"-->Rig
BinInformation-->Bin
classDiagram
class ServicePoint
class Rig
class BinInformation {
BlendChemical
Quantity
WorkingServicePoint
PodIndex
Capacity
LastProductHaulLoadId
BlendTestingStatus
BinStatus
Quatity
Volume
}
class Bin{
PodCount
}
class BlendChemical
class ProductHaulLoad {
<<BlendRequest>>
Id
BlendTestingStatus
IsAirborneHazard
}
Rig "1" <-- "0..*" BinInformation: 工作于
BinInformation "*"-->"1" Bin: 每个Pod
BinInformation --> BlendChemical: 包含
BinInformation-->ServicePoint: 分配给
ProductHaulLoad-->BlendChemical: 加载到储仓
BinInformation..>ProductHaulLoad
classDiagram
class RigJobSanjelCrewSection
class RigJobThirdPartyCrewSection
class SanjelCrewSchedule
class ThirdPartyCrewSchedule
class UnitSchedule
class WorkerSchedule
class RigJob
class SanjelCrew
class ThirdPartyCrew
class RigJobCrewSection
class Employee
class TruckUnit
class ProductHaul
class RotationTemplate
class ShippingLoadSheet
SanjelCrew o-- TruckUnit
SanjelCrew o-- Employee
RigJobCrewSection "0..*" -->"0..1"RigJob
RigJobCrewSection "0..*" -->"0..1"ProductHaul
RigJobSanjelCrewSection" 1"<--"1"SanjelCrewSchedule
RigJobThirdPartyCrewSection "1"<--"1"ThirdPartyCrewSchedule
RigJobSanjelCrewSection "1..*"-->"1"SanjelCrew
RigJobThirdPartyCrewSection "1..*" -->"1"ThirdPartyCrew
RigJobCrewSection<|--RigJobSanjelCrewSection
RigJobCrewSection<|--RigJobThirdPartyCrewSection
UnitSchedule"1..*"-->"1"TruckUnit
WorkerSchedule"1..*"-->"1"Employee
SanjelCrewSchedule *--> UnitSchedule
SanjelCrewSchedule *--> WorkerSchedule
WorkerSchedule-->"0..1"RotationTemplate
ProductHaul "1" *--> ShippingLoadSheet
stateDiagram-V2
state has_next_Load_Requested <<choice>>
state will_be_off_duty <<choice>>
state is_bulker_loaded <<choice>>
OffDuty-->LoadRequested: 产品运输已分配
LoadRequested-->Called: 人员准备就绪,呼叫司机
Called--> is_bulker_loaded: 散装罐车已装载?
is_bulker_loaded --> Loading: 否
is_bulker_loaded --> Loaded: 是
state OnDuty {
Enroute-->OnLocation: 人员到达现场
OnLocation-->OnWayIn: 人员正在返回
OnWayIn-->Returned: 人员抵达散装工厂
has_next_Load_Requested-->Loading: 是
Returned-->will_be_off_duty: 人员将要下班?
has_next_Load_Requested-->Returned: 否
will_be_off_duty-->has_next_Load_Requested:否,已安排下一次产品运输?
Loading-->Loaded: 散装罐车已装载
Loaded-->Enroute: 人员离开散装工厂
}
will_be_off_duty-->OffDuty: 是
OffDuty-->Down: 设置人员休息
stateDiagram-v2
[*]-->Scheduled
Scheduled-->Loaded:BPAVS已装载散装罐车
Loaded-->InProgress:人员分配设置为在路上
InProgress-->OnLocation: 在RigBoard或DRB上设置为现场
OnLocation-->[*]
Scheduled-->[Deleted]:已取消
Loaded-->[Deleted]:已取消
stateDiagram-v2
[*]-->Scheduled
Scheduled-->Loading:搅拌正在装载到散装罐车
Loading-->Loaded: 搅拌已装载到散装罐车
Loaded-->EnRoute:在DRB上离站时人员分配设置为在路上
EnRoute-->OnLocation:在RigBoard或DRB上设置为现场
OnLocation-->OnWayIn:在DRB上设置为正在返回
OnWayIn-->Returned:返回时在DRB上设置为已返回
Returned-->NextAssignment: 如果有下一次运输可用
Returned-->LogoffDuty: 设置为下班
Scheduled-->Removed: 分配已取消
Loading-->Removed: 分配已取消
Loaded-->Removed: 分配已取消
classDiagram
class SalesProject {
- ClientCompany: ClientCompany
- District: ServicePoint
- ServiceLIne: ServiceLine
- Rig: Rig
- Area: string
- StartTime: DateTime
- EndTime: DateTime
- ProgramId: string
- WellCount: int
- StringCount: int
- CmtStringCount: int
- Frequency: int
- EstimatedRevenue: double
- SalesRepresentative: Emplyee
- Comments: string
- Status: SalesProjectStatus
- ApprovalStatus: SalesProjectApporvalStaus
- SpecialtyProducts: List~SalesSpecialtyProduct~
- DrillDays: int
}
class SalesProjectStatus {
- Bid
- Potential
- SecondCall
- Won
- Lost
}
<<Enum>> SalesProjectStatus
class SalesProjectApporvalStaus {
- Draft
- Pending
- Approved
- Complete
}
<<Enum>> SalesProjectApporvalStaus
class DrillOrder {
- CementingOrders: List~JobOrder~
- Ordinal: int
- WellCount: int
- ProgramId: string
}
class JobOrder{
- JobType: JobType
- EsitmateRevenue: double
- Ordinal: int
}
class SalesSpecialtyProduct {
- Product: Product
}
SalesProject-->SalesProjectApporvalStaus
SalesProject-->SalesProjectStatus
SalesProject *--> DrillOrder
DrillOrder *--> JobOrder
SalesProject *-->SalesSpecialtyProduct
TruckUnit主数据包含Sanjel中的所有车辆,它们按主要类型和子类型进行分类。车辆单元根据目前一致的特定命名约定进行命名。
类别 | 主类型 | 主类型Id | 子类型 | 子类型Id | 命名 |
---|---|---|---|---|---|
Pumper Trailer | ROLLING STOCK TRAILER | 2 | SCM Twin | 205 | 445### |
B-train | ROLLING STOCK TRAILER | 2 | B-Train | 15 | 446###L |
Bulker Trailer | ROLLING STOCK TRAILER | 2 | Cement Bulk Transpor | 101 | 446### |
B-train | ROLLING STOCK TRAILER | 2 | B-Train - Pup | 280 | 446###P |
Pumper Tractor | ROLLING STOCK TRACTOR | 1 | Tandem - Tractor | 276 | 745### |
Bulker Trailer | ROLLING STOCK BODY JOB | 5 | Cement Bulk Transpor | 61 | 746501 |
Bulker Tractor | ROLLING STOCK TRACTOR | 1 | Tandem - Tractor | 276 | 746### |
Pumper | ROLLING STOCK BODY JOB | 5 | C & A | 62 | 740### |
Pumper | ROLLING STOCK BODY JOB | 5 | SCM Single | 238 | 740### |
Pickup | LIGHT DUTY VEHICLES | 4 | 1/2 Ton | 3/4 Ton | 1 Ton | 93 | 94 | 95 | 20#### |
Bulker Trailer | ROLLING STOCK TRAILER | 2 | 4000 Porta Bulker | 27 | 449### |
Pumper | ROLLING STOCK BODY JOB | 5 | Low Rate Pump | 71 | |
Pumper | ROLLING STOCK TRAILER | 2 | SCM Twin HHP | 288 | |
Pumper | FIELD SUPPORT EQUIPMENT | 3 | Other Support Equipm | 291 |
public enum EServiceEntityStatus
{
[EnumMember] [Description("空")] Empty = 0x0,
[EnumMember] [Description("就绪")] Ready = 0x1,
[EnumMember] [Description("进行中")] InProgress = 0x2,
[EnumMember] [Description("已传输")] Transmitted = 0x3,
[EnumMember] [Description("已取消")] Canceled = 0x4,
[EnumMember] [Description("已锁定")] Locked = 0x5,
[EnumMember] [Description("在途中")] InRoute = 0x6,
[EnumMember] [Description("已组装")] Assembled = 0x7,
[EnumMember] [Description("已接收")] Received = 0x8,
[EnumMember] [Description("预传输")] PreTransmitted = 0x9,
[EnumMember] [Description("已删除")] Deleted = 0xA,
[EnumMember] [Description("待定")] Pending = 0xB,
[EnumMember] [Description("已确认")] Confirmed = 0xC,
[EnumMember] [Description("已调度")] Scheduled = 0xD,
[EnumMember] [Description("已派遣")] Dispatched = 0xE,
[EnumMember] [Description("已完成")] Completed = 0xF,
[EnumMember] [Description("已提醒")] Alerted = 0x10,
[EnumMember] [Description("已过期")] Expired = 0x11,
[EnumMember] [Description("等待审批")] AwaitingApproval = 0x200,
[EnumMember] [Description("审批中")] Approving = 0x400,
[EnumMember] [Description("已批准")] Approved = 0x800,
[EnumMember] [Description("异常")] Exception = 0x1000,
[EnumMember] [Description("成功")] Succeed = 0x2000,
[EnumMember] [Description("失败")] Failed = 0x4000,
}
public enum JobLifeStatus
{
[EnumMember]
[Description("无")]
None = 0,
[EnumMember]
[Description("已提醒")]
Alerted = 1,
[EnumMember]
[Description("待定")]
Pending = 2,
[EnumMember]
[Description("已确认")]
Confirmed = 3,
[EnumMember]
[Description("已调度")]
Scheduled = 4,
[EnumMember]
[Description("已派遣")]
Dispatched = 5,
[EnumMember]
[Description("已取消")]
Canceled = 6,
[EnumMember]
[Description("进行中")]
InProgress = 7,
[EnumMember]
[Description("已完成")]
Completed = 8,
[EnumMember]
[Description("已删除")]
Deleted = 9,
}
public enum ProductHaulStatus
{
[EnumMember]
[Description("空")]
Empty = 0,
[EnumMember]
[Description("待定")]
Pending = 1,
[EnumMember]
[Description("已调度")]
Scheduled = 2,
[EnumMember]
[Description("进行中")]
InProgress = 3,
[EnumMember]
[Description("现场")]
OnLocation = 4,
[EnumMember]
[Description("装载中")]
Loading = 5,
[EnumMember]
[Description("已装载")]
Loaded = 6,
[EnumMember]
[Description("已返回")]
Returned = 7,
}
public enum ProductHaulLoadStatus
{
[EnumMember]
[Description("空")]
Empty = 0,
[EnumMember]
[Description("已调度")]
Scheduled = 1,
[EnumMember]
[Description("现场")]
OnLocation = 2,
[EnumMember]
[Description("搅拌中")]
Blending = 3,
[EnumMember]
[Description("搅拌完成")]
BlendCompleted = 4,
[EnumMember]
[Description("已装载")]
Loaded = 5,
[EnumMember]
[Description("运输已调度")]
HaulScheduled = 6,
[EnumMember]
[Description("已存储")]
Stored = 7,
[EnumMember]
[Description("作业已取消")]
JobCanceled = 8,
[EnumMember]
[Description("已回收")]
Recycled = 9,
[EnumMember]
[Description("搅拌故障")]
FaultBlend = 10,
[EnumMember]
[Description("可使用")]
GoodToUse = 11,
[EnumMember]
[Description("已重新搅拌")]
Reblended = 12,
[EnumMember]
[Description("就绪")]
Ready = 13,
[EnumMember]
[Description("部分运输已调度")]
PartialHaulScheduled = 14,
[EnumMember]
[Description("BPO已确认")]
BpoConfirmed = 15,
[EnumMember]
[Description("可以开始搅拌")]
BlendingCanCommence = 16,
public enum ShippingStatus
{
[EnumMember]
[Description("空")]
Empty = 0,
[EnumMember]
[Description("已调度")]
Scheduled = 1,
[EnumMember]
[Description("已装载")]
Loaded = 2,
[EnumMember]
[Description("现场")]
OnLocation = 3,
}
public enum RigJobCrewSectionStatus
{
[EnumMember]
[Description("已分配")]
Assigned = 1,
[EnumMember]
[Description("已调度")]
Scheduled = 2,
[EnumMember]
[Description("已移除")]
Removed = 3,
[EnumMember]
[Description("已呼叫")]
Called = 4,
[EnumMember]
[Description("登记上班")]
LogOnDuty = 5,
[EnumMember]
[Description("登记下班")]
LogOffDuty = 6,
[EnumMember]
[Description("装载中")]
Loading = 7,
[EnumMember]
[Description("已装载")]
Loaded = 8,
[EnumMember]
[Description("在途中")]
EnRoute = 9,
[EnumMember]
[Description("现场")]
OnLocation = 10,
[EnumMember]
[Description("正在返回")]
OnWayIn = 11,
[EnumMember]
[Description("已返回")]
Returned = 12,
}
public enum BulkerCrewStatus
{
[EnumMember]
[Description("无")]
None = 0,
[EnumMember]
[Description("下班")]
OffDuty = 1,
[EnumMember]
[Description("在途中")]
EnRoute = 2,
[EnumMember]
[Description("已呼叫")]
Called = 3,
[EnumMember]
[Description("正在返回")]
OnWayIn = 4,
[EnumMember]
[Description("准备就绪")]
GoodToGo = 5,
[EnumMember]
[Description("已请求装载")]
LoadRequested = 6,
[EnumMember]
[Description("休息")]
Down = 7,
[EnumMember]
[Description("现场")]
OnLocation = 8,
[EnumMember]
[Description("已返回")]
Returned = 9,
[EnumMember]
[Description("已装载")]
Loaded = 10,
[EnumMember]
[Description("装载中")]
Loading = 11,
}
public enum BlendShippingStatus
{
[EnumMember]
[Description("空")]
Empty = 0,
[EnumMember]
[Description("运输已调度")]
HaulScheduled = 1,
[EnumMember]
[Description("部分运输已调度")]
ParitialHaulScheduled = 2,
[EnumMember]
[Description("现场")]
OnLocation = 3,
}