feat: add algorithm core for shadow observation
This commit is contained in:
@@ -0,0 +1,224 @@
|
||||
/* Read-only validation queries for a SQL Server 2016 installation. */
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT CAST(SERVERPROPERTY('ProductVersion') AS varchar(30)) AS product_version,
|
||||
DB_NAME() AS database_name;
|
||||
|
||||
SELECT o.type_desc, COUNT(*) AS object_count
|
||||
FROM sys.objects o
|
||||
JOIN sys.schemas s ON s.schema_id = o.schema_id
|
||||
WHERE s.name = N'alg' AND o.type IN ('U', 'V', 'P')
|
||||
GROUP BY o.type_desc
|
||||
ORDER BY o.type_desc;
|
||||
|
||||
SELECT installed.object_kind, installed.object_name
|
||||
FROM (
|
||||
SELECT o.type_desc AS object_kind, o.name AS object_name
|
||||
FROM sys.objects o
|
||||
JOIN sys.schemas s ON s.schema_id = o.schema_id
|
||||
WHERE s.name = N'alg' AND o.type IN ('U', 'V', 'P')
|
||||
UNION ALL
|
||||
SELECT 'INDEX' AS object_kind, i.name AS object_name
|
||||
FROM sys.indexes i
|
||||
JOIN sys.objects o ON o.object_id = i.object_id
|
||||
JOIN sys.schemas s ON s.schema_id = o.schema_id
|
||||
WHERE s.name = N'alg' AND i.name IS NOT NULL
|
||||
) installed
|
||||
ORDER BY installed.object_kind, installed.object_name;
|
||||
|
||||
SELECT warehouse_id,
|
||||
COUNT_BIG(*) AS excluded_from_algorithm_topology_count,
|
||||
SUM(CASE WHEN group_coding_no IS NULL OR LTRIM(RTRIM(group_coding_no)) = ''
|
||||
THEN 1 ELSE 0 END) AS missing_lane_code_count,
|
||||
SUM(CASE WHEN TRY_CONVERT(int, group_coding) IS NULL
|
||||
THEN 1 ELSE 0 END) AS invalid_depth_count
|
||||
FROM dbo.bas_cargo_space
|
||||
WHERE group_coding_no IS NULL OR LTRIM(RTRIM(group_coding_no)) = ''
|
||||
OR TRY_CONVERT(int, group_coding) IS NULL
|
||||
GROUP BY warehouse_id
|
||||
ORDER BY warehouse_id;
|
||||
|
||||
SELECT warehouse_id,
|
||||
COUNT(*) AS space_state_count,
|
||||
SUM(CASE WHEN space_status = 2 THEN 1 ELSE 0 END) AS full_space_count,
|
||||
SUM(CASE WHEN inbound_available = 1 THEN 1 ELSE 0 END) AS inbound_available_count,
|
||||
SUM(CASE WHEN pending_outbound = 1 THEN 1 ELSE 0 END) AS pending_outbound_space_count,
|
||||
SUM(CASE WHEN has_gap = 1 THEN 1 ELSE 0 END) AS gap_space_count,
|
||||
SUM(CASE WHEN tray_conflict = 1 OR project_conflict = 1 OR product_conflict = 1 THEN 1 ELSE 0 END) AS conflict_space_count
|
||||
FROM alg.v_space_state
|
||||
GROUP BY warehouse_id
|
||||
ORDER BY warehouse_id;
|
||||
|
||||
SELECT warehouse_id, COUNT(*) AS topology_count
|
||||
FROM alg.space_topology
|
||||
GROUP BY warehouse_id
|
||||
ORDER BY warehouse_id;
|
||||
|
||||
SELECT warehouse_id,
|
||||
COUNT(*) AS inventory_detail_snapshot_count,
|
||||
COUNT(DISTINCT space_id) AS inventory_space_snapshot_count,
|
||||
MAX(synchronized_at) AS last_inventory_synchronized_at
|
||||
FROM alg.inventory_item_snapshot
|
||||
GROUP BY warehouse_id
|
||||
ORDER BY warehouse_id;
|
||||
|
||||
;WITH warehouse_floors AS (
|
||||
SELECT DISTINCT warehouse_id, the_floor AS floor_no
|
||||
FROM dbo.bas_cargo_space
|
||||
), role_counts AS (
|
||||
SELECT cargo.warehouse_id, cargo.the_floor AS floor_no,
|
||||
SUM(CASE WHEN role.role = 'RELOCATION_BUFFER' THEN 1 ELSE 0 END) AS relocation_buffer_count,
|
||||
SUM(CASE WHEN role.role = 'OUTBOUND_BUFFER' THEN 1 ELSE 0 END) AS outbound_buffer_count,
|
||||
SUM(CASE WHEN role.role = 'PROTECTED_CORE' THEN 1 ELSE 0 END) AS protected_core_count
|
||||
FROM dbo.bas_cargo_space cargo
|
||||
LEFT JOIN alg.space_role role ON role.space_id = cargo.cargo_space_id
|
||||
GROUP BY cargo.warehouse_id, cargo.the_floor
|
||||
)
|
||||
SELECT floors.warehouse_id, floors.floor_no,
|
||||
ISNULL(counts.relocation_buffer_count, 0) AS relocation_buffer_count,
|
||||
CAST(4 AS int) AS relocation_buffer_target,
|
||||
CASE WHEN ISNULL(counts.relocation_buffer_count, 0) >= 4 THEN 0
|
||||
ELSE 4 - ISNULL(counts.relocation_buffer_count, 0) END AS relocation_buffer_shortage,
|
||||
ISNULL(counts.outbound_buffer_count, 0) AS outbound_buffer_count,
|
||||
ISNULL(counts.protected_core_count, 0) AS protected_core_count
|
||||
FROM warehouse_floors floors
|
||||
LEFT JOIN role_counts counts ON counts.warehouse_id = floors.warehouse_id
|
||||
AND counts.floor_no = floors.floor_no
|
||||
ORDER BY floors.warehouse_id, floors.floor_no;
|
||||
|
||||
SELECT cargo.warehouse_id, cargo.the_floor AS floor_no, role.space_id, role.role, role.updated_at
|
||||
FROM alg.space_role role
|
||||
JOIN dbo.bas_cargo_space cargo ON cargo.cargo_space_id = role.space_id
|
||||
WHERE role.role IN ('RELOCATION_BUFFER', 'OUTBOUND_BUFFER', 'PROTECTED_CORE')
|
||||
ORDER BY cargo.warehouse_id, cargo.the_floor, role.role, role.space_id;
|
||||
|
||||
SELECT warehouse_id, COUNT(*) AS lane_state_count,
|
||||
SUM(CASE WHEN pending_outbound = 1 THEN 1 ELSE 0 END) AS pending_lane_count,
|
||||
SUM(CASE WHEN has_gap = 1 THEN 1 ELSE 0 END) AS gap_lane_count
|
||||
FROM alg.lane_state
|
||||
GROUP BY warehouse_id
|
||||
ORDER BY warehouse_id;
|
||||
|
||||
SELECT 'bas_cargo_space' AS table_name, COUNT_BIG(*) AS row_count,
|
||||
CHECKSUM_AGG(BINARY_CHECKSUM(cargo_space_id, warehouse_id, group_coding_no, group_coding, status, tray_code)) AS row_checksum
|
||||
FROM dbo.bas_cargo_space
|
||||
UNION ALL
|
||||
SELECT 'bas_stock', COUNT_BIG(*),
|
||||
CHECKSUM_AGG(BINARY_CHECKSUM(stock_id, cargo_space_id, tray_code, spare4, product_id, lot_no, in_date))
|
||||
FROM dbo.bas_stock
|
||||
UNION ALL
|
||||
SELECT 'mydo_job', COUNT_BIG(*),
|
||||
CHECKSUM_AGG(BINARY_CHECKSUM(job_id, status, task_no, tray_code, cargo_space_id, target_cargo_space_id, in_or_out, warehouse_id))
|
||||
FROM dbo.mydo_job;
|
||||
|
||||
;WITH pallet_details AS (
|
||||
SELECT cargo_space_id,
|
||||
MIN(NULLIF(LTRIM(RTRIM(tray_code)), '')) AS tray_code,
|
||||
MIN(NULLIF(LTRIM(RTRIM(spare4)), '')) AS project_no,
|
||||
MIN(NULLIF(LTRIM(RTRIM(product_id)), '')) AS first_product_no,
|
||||
MAX(NULLIF(LTRIM(RTRIM(product_id)), '')) AS last_product_no,
|
||||
COUNT(DISTINCT NULLIF(LTRIM(RTRIM(product_id)), '')) AS product_count
|
||||
FROM dbo.bas_stock
|
||||
GROUP BY cargo_space_id
|
||||
)
|
||||
SELECT TOP 5 state.space_id, details.tray_code, details.project_no,
|
||||
details.first_product_no, details.last_product_no, details.product_count
|
||||
FROM pallet_details details
|
||||
JOIN alg.v_space_state state ON state.space_id = details.cargo_space_id
|
||||
WHERE details.product_count > 1
|
||||
AND state.space_status = '2'
|
||||
AND state.stock_tray_count = 1
|
||||
AND state.stock_project_count = 1
|
||||
AND state.tray_conflict = 0
|
||||
AND state.project_conflict = 0
|
||||
AND state.pending_outbound = 0
|
||||
AND state.reserved = 0
|
||||
AND state.has_gap = 0
|
||||
ORDER BY state.space_id;
|
||||
|
||||
SELECT space_id, warehouse_id, lane_code, depth, space_status, role,
|
||||
tray_conflict, project_conflict, product_conflict, pending_outbound, reserved, has_gap,
|
||||
inbound_available
|
||||
FROM alg.v_space_state
|
||||
WHERE tray_conflict = 1 OR project_conflict = 1 OR product_conflict = 1
|
||||
OR pending_outbound = 1 OR has_gap = 1
|
||||
ORDER BY warehouse_id, lane_code, depth;
|
||||
|
||||
SELECT reservation_id, warehouse_id, lane_code, space_id, project_no, status,
|
||||
created_at, released_at
|
||||
FROM alg.reservation
|
||||
ORDER BY created_at DESC;
|
||||
|
||||
SELECT lock_id, request_id, warehouse_id, floor_no, status, created_at, released_at
|
||||
FROM alg.deep_workflow_lock
|
||||
ORDER BY created_at DESC;
|
||||
|
||||
SELECT warehouse_id, lane_code, topology_dirty, reason_mask, change_count,
|
||||
enqueued_at, last_changed_at
|
||||
FROM alg.dirty_lane_queue
|
||||
ORDER BY last_changed_at, warehouse_id, lane_code;
|
||||
|
||||
SELECT workflow_id, request_id, stockout_detail_id, warehouse_id, source_stock_id,
|
||||
selected_tray_code, source_space_id, lane_code, floor_no, exit_id,
|
||||
status, current_step, total_steps, created_at, updated_at, completed_at
|
||||
FROM alg.outbound_workflow
|
||||
WHERE status <> 'COMPLETED'
|
||||
ORDER BY created_at, workflow_id;
|
||||
|
||||
SELECT step.workflow_id, step.assignment_id, step.phase, step.source_space_id,
|
||||
step.target_space_id, step.workflow_step, step.workflow_total_steps,
|
||||
step.depends_on_assignment_id, step.stock_id, step.tray_code, step.status,
|
||||
step.wms_job_id, step.created_at, step.started_at, step.at_exit_at, step.completed_at
|
||||
FROM alg.outbound_workflow_step step
|
||||
JOIN alg.outbound_workflow workflow ON workflow.workflow_id = step.workflow_id
|
||||
WHERE workflow.status <> 'COMPLETED' OR step.status <> 'COMPLETED'
|
||||
ORDER BY step.workflow_id, step.workflow_step;
|
||||
|
||||
SELECT mode.warehouse_id, mode.requested_enabled, mode.effective_state,
|
||||
mode.status_reason, mode.mode_version, mode.updated_by, mode.updated_at
|
||||
FROM alg.tidy_mode mode
|
||||
ORDER BY mode.warehouse_id;
|
||||
|
||||
SELECT queue.warehouse_id, queue.lane_code, queue.dirty_version, queue.queue_status,
|
||||
queue.reason_mask, queue.change_count, queue.last_dirty_at, queue.claimed_version,
|
||||
queue.claimed_by, queue.claimed_at, queue.lease_expires_at, queue.last_error
|
||||
FROM alg.tidy_lane_queue queue
|
||||
ORDER BY queue.last_dirty_at, queue.warehouse_id, queue.lane_code;
|
||||
|
||||
SELECT workflow.workflow_id, workflow.warehouse_id, workflow.lane_code, workflow.origin,
|
||||
workflow.candidate_type, workflow.source_space_id, workflow.target_space_id,
|
||||
workflow.stock_id, workflow.tray_code, workflow.status, workflow.claimed_dirty_version,
|
||||
workflow.vehicle_id, workflow.wcs_task_id, workflow.status_reason,
|
||||
workflow.created_at, workflow.updated_at, workflow.dispatched_at, workflow.completed_at
|
||||
FROM alg.tidy_workflow workflow
|
||||
WHERE workflow.completed_at IS NULL
|
||||
OR workflow.status IN ('PAUSED_RECOVERY', 'CANCELLED_RECONCILED')
|
||||
ORDER BY workflow.created_at, workflow.workflow_id;
|
||||
|
||||
SELECT step.workflow_id, step.step_id, step.step_no, step.source_space_id,
|
||||
step.target_space_id, step.stock_id, step.tray_code, step.status,
|
||||
step.wms_job_id, step.wcs_task_id, step.expected_event_stage,
|
||||
step.created_at, step.started_at, step.completed_at
|
||||
FROM alg.tidy_step step
|
||||
JOIN alg.tidy_workflow workflow ON workflow.workflow_id = step.workflow_id
|
||||
WHERE workflow.completed_at IS NULL OR step.completed_at IS NULL
|
||||
ORDER BY step.workflow_id, step.step_no;
|
||||
|
||||
SELECT lock.workflow_id, lock.warehouse_id, lock.resource_type, lock.resource_id,
|
||||
lock.status, lock.locked_at, lock.released_at
|
||||
FROM alg.tidy_space_lock lock
|
||||
WHERE lock.status = 'ACTIVE'
|
||||
ORDER BY lock.warehouse_id, lock.resource_type, lock.resource_id;
|
||||
|
||||
SELECT event.workflow_id, event.step_id, event.wcs_task_id, event.event_stage,
|
||||
COUNT(*) AS callback_count, MIN(event.received_at) AS first_received_at,
|
||||
MAX(event.received_at) AS last_received_at
|
||||
FROM alg.tidy_callback_event event
|
||||
GROUP BY event.workflow_id, event.step_id, event.wcs_task_id, event.event_stage
|
||||
HAVING COUNT(*) > 1
|
||||
ORDER BY event.workflow_id, event.step_id, event.event_stage;
|
||||
|
||||
SELECT workflow.origin, workflow.status, COUNT(*) AS workflow_count
|
||||
FROM alg.tidy_workflow workflow
|
||||
GROUP BY workflow.origin, workflow.status
|
||||
ORDER BY workflow.origin, workflow.status;
|
||||
Reference in New Issue
Block a user