DELETE FROM wms_energy_coil_daily WHERE task_id = #{taskId}
SELECT * FROM wms_energy_coil_daily WHERE task_id = #{taskId}
AND c.task_id = #{bo.taskId}
AND c.energy_type_id = #{bo.energyTypeId}
AND c.meter_id = #{bo.meterId}
AND c.warehouse_id = #{bo.warehouseId}
AND c.actual_warehouse_id = #{bo.actualWarehouseId}
AND c.calc_date =]]> #{bo.startDate}
AND c.calc_date #{bo.endDate}
AND c.enter_coil_no LIKE CONCAT('%', #{bo.enterCoilNo}, '%')
AND c.current_coil_no LIKE CONCAT('%', #{bo.currentCoilNo}, '%')
SELECT
CAST(c.energy_type_id AS CHAR) AS groupKey,
COALESCE(et.name, CONCAT('能源-', c.energy_type_id)) AS groupName,
c.energy_type_id,
SUM(c.consumption_qty) AS totalConsumption,
SUM(c.cost_amount) AS totalCost,
COUNT(DISTINCT c.coil_id) AS coilCount
FROM wms_energy_coil_daily c
LEFT JOIN ems_energy_type et ON c.energy_type_id = et.energy_type_id
GROUP BY c.energy_type_id
ORDER BY totalCost DESC
SELECT
CAST(c.warehouse_id AS CHAR) AS groupKey,
COALESCE(wh.warehouse_name, CONCAT('库区-', c.warehouse_id)) AS groupName,
c.warehouse_id,
c.actual_warehouse_id,
SUM(c.consumption_qty) AS totalConsumption,
SUM(c.cost_amount) AS totalCost,
COUNT(DISTINCT c.coil_id) AS coilCount
FROM wms_energy_coil_daily c
LEFT JOIN wms_warehouse wh ON c.warehouse_id = wh.warehouse_id
GROUP BY c.warehouse_id, c.actual_warehouse_id
ORDER BY totalCost DESC
SELECT
CAST(c.meter_id AS CHAR) AS groupKey,
COALESCE(m.meter_code, CONCAT('计量表-', c.meter_id)) AS groupName,
c.meter_id,
c.energy_type_id,
SUM(c.consumption_qty) AS totalConsumption,
SUM(c.cost_amount) AS totalCost,
COUNT(DISTINCT c.coil_id) AS coilCount
FROM wms_energy_coil_daily c
LEFT JOIN ems_meter m ON c.meter_id = m.meter_id
GROUP BY c.meter_id, c.energy_type_id
ORDER BY totalCost DESC
SELECT
CAST(c.task_id AS CHAR) AS groupKey,
CONCAT('任务-', c.task_id) AS groupName,
c.task_id,
c.energy_type_id,
SUM(c.consumption_qty) AS totalConsumption,
SUM(c.cost_amount) AS totalCost,
COUNT(DISTINCT c.coil_id) AS coilCount
FROM wms_energy_coil_daily c
GROUP BY c.task_id, c.energy_type_id
ORDER BY c.task_id DESC
SELECT
COUNT(DISTINCT c.coil_id) AS coilCount,
SUM(c.consumption_qty) AS totalConsumption,
SUM(c.cost_amount) AS totalCost
FROM wms_energy_coil_daily c
SELECT
pa.coil_id AS coilId,
pa.current_coil_no AS currentCoilNo,
c.enter_coil_no AS enterCoilNo,
pa.warehouse_id AS warehouseId,
wh.warehouse_name AS warehouseName,
pa.create_time AS scanTime,
COALESCE(pa.complete_time, NOW()) AS completeTime,
TIMESTAMPDIFF(MINUTE, pa.create_time, COALESCE(pa.complete_time, NOW())) AS productionDuration,
SUM(COALESCE(ec.consumption, 0)) AS consumptionQty,
SUM(COALESCE(ec.consumption, 0) * COALESCE(er.rate, 0)) AS costAmount,
CAST(1.0 AS DECIMAL(10, 6)) AS allocationFactor
FROM wms_coil_pending_action pa
LEFT JOIN wms_material_coil c ON pa.coil_id = c.coil_id
LEFT JOIN wms_warehouse wh ON pa.warehouse_id = wh.warehouse_id
LEFT JOIN ems_energy_consumption ec ON ec.end_time BETWEEN pa.create_time AND COALESCE(pa.complete_time, NOW())
LEFT JOIN ems_meter m ON ec.meter_id = m.meter_id
LEFT JOIN ems_energy_type et ON m.energy_type_id = et.energy_type_id
LEFT JOIN ems_energy_rate er ON et.energy_type_id = er.energy_type_id
AND er.effective_date CURDATE()
AND (er.expiry_date IS NULL OR er.expiry_date =]]> CURDATE())
WHERE pa.action_status IN (0, 1, 2)
AND pa.warehouse_id IS NOT NULL
GROUP BY pa.coil_id, pa.current_coil_no, c.enter_coil_no, pa.warehouse_id, wh.warehouse_name, pa.create_time, pa.complete_time
ORDER BY pa.warehouse_id, pa.create_time DESC
SELECT
COUNT(DISTINCT t.coil_id) AS totalCoils,
SUM(t.total_consumption) AS totalConsumption,
SUM(t.total_cost) AS totalCost,
SUM(t.production_duration) AS totalProductionDuration,
CASE
WHEN SUM(t.production_duration) > 0
THEN SUM(t.total_cost) / (SUM(t.production_duration) / 60.0)
ELSE 0
END AS avgUnitCost
FROM (
SELECT
pa.coil_id,
pa.current_coil_no,
c.enter_coil_no,
pa.warehouse_id,
wh.warehouse_name,
pa.create_time,
COALESCE(pa.complete_time, NOW()) AS complete_time,
TIMESTAMPDIFF(MINUTE, pa.create_time, COALESCE(pa.complete_time, NOW())) AS production_duration,
SUM(COALESCE(ec.consumption, 0)) AS total_consumption,
SUM(COALESCE(ec.consumption, 0) * COALESCE(er.rate, 0)) AS total_cost
FROM wms_coil_pending_action pa
LEFT JOIN wms_material_coil c ON pa.coil_id = c.coil_id
LEFT JOIN wms_warehouse wh ON pa.warehouse_id = wh.warehouse_id
LEFT JOIN ems_energy_consumption ec ON ec.end_time BETWEEN pa.create_time AND COALESCE(pa.complete_time, NOW())
LEFT JOIN ems_meter m ON ec.meter_id = m.meter_id
LEFT JOIN ems_energy_type et ON m.energy_type_id = et.energy_type_id
LEFT JOIN ems_energy_rate er ON et.energy_type_id = er.energy_type_id
AND er.effective_date CURDATE()
AND (er.expiry_date IS NULL OR er.expiry_date =]]> CURDATE())
WHERE pa.action_status IN (0, 1, 2)
AND pa.warehouse_id IS NOT NULL
AND c.enter_coil_no LIKE CONCAT('%', #{enterCoilNo}, '%')
AND pa.current_coil_no LIKE CONCAT('%', #{currentCoilNo}, '%')
AND pa.warehouse_id = #{warehouseId}
GROUP BY pa.coil_id, pa.current_coil_no, c.enter_coil_no, pa.warehouse_id, wh.warehouse_name, pa.create_time, pa.complete_time
) t
SELECT
c.energy_cost_id AS energyCostId,
c.task_id AS taskId,
c.calc_date AS calcDate,
c.coil_id AS coilId,
c.enter_coil_no AS enterCoilNo,
c.current_coil_no AS currentCoilNo,
c.warehouse_id AS warehouseId,
c.actual_warehouse_id AS actualWarehouseId,
c.energy_type_id AS energyTypeId,
c.meter_id AS meterId,
c.consumption_qty AS consumptionQty,
c.cost_amount AS costAmount,
c.allocation_basis_weight AS allocationBasisWeight,
c.allocation_basis_days AS allocationBasisDays,
c.allocation_factor AS allocationFactor,
c.remark AS remark
FROM wms_energy_coil_daily c
ORDER BY c.calc_date DESC, c.energy_cost_id DESC