Sanjel Domain Model - CassiniLaw/KnowledgeBase 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 BlendRequest {
<<ProductHaulLoad>>
+BaseBlendWeight
+TotalBlendWeight
+IsTotalBlendTonnage
+Unit
+ProductHaulLoadLifeStatus
+EstimateLoadTime
+ExpectedOnLocationTime
+BlendShippingStatus
+BlendTestingStatus
+DispatchedBy
+Comments
}
class BinInformation {
+PodIndex
}
class Bin
class BulkPlant {
<<Rig>>
}
class Customer
BlendSection<|--JobDesignBlendSection
BlendSection<|--CallSheetBlendSection
RigJob-->Rig
CallSheet..>JobDesignPumpingJobSection
RigJob<-->CallSheet : equivalence
CallSheet "1"*-->"1..*" CallSheetBlendSection
JobDesign "1"*-->"1..*" JobDesignPumpingJobSection
JobDesignPumpingJobSection "1"*-->"1..*" JobDesignBlendSection
BulkPlant "1" <-- "0..*" BinInformation
BinInformation "*"-->"1" Bin
BlendRequest --> BlendChemical
BlendChemical..>BlendSection : Gerenerated From
CallSheet <.. BlendRequest
BlendRequest --> BulkPlant : Blended By
BlendRequest-->BinInformation : Load To
Customer<--RigJob
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,
}
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,
}