SELECT m.enter_coil_no, m.coil_id, m.current_coil_no, IFNULL(m.net_weight, 0) AS net_weight_ton, IFNULL(m.gross_weight, 0) AS gross_weight_ton, CASE WHEN IFNULL(m.gross_weight, 0) > 0 THEN 'gross' ELSE 'net' END AS weight_basis, CASE WHEN IFNULL(m.net_weight, 0) = 0 AND IFNULL(m.gross_weight, 0) > 0 THEN m.gross_weight ELSE IFNULL(m.net_weight, 0) END AS charge_weight_ton, DATE(m.create_time) AS start_date, CASE WHEN m.export_time IS NOT NULL THEN DATE_SUB(DATE(m.export_time), INTERVAL 1 DAY) WHEN #{calcDate} IS NOT NULL THEN #{calcDate} ELSE CURDATE() END AS raw_end_date, CASE WHEN m.export_time IS NULL THEN 0 ELSE 1 END AS is_shipped, IFNULL(cs.unit_cost, 0) AS unit_cost, m.warehouse_id, COALESCE(w.warehouse_name, '-') AS warehouse_name FROM wms_material_coil m LEFT JOIN wms_cost_standard_config cs ON cs.status = 1 AND DATE(m.create_time) >= cs.effective_date AND (cs.expire_date IS NULL OR DATE(m.create_time) <= cs.expire_date) LEFT JOIN wms_warehouse w ON w.warehouse_id = m.warehouse_id AND w.del_flag = 0 WHERE m.data_type = 1 AND m.del_flag = 0 AND m.enter_coil_no IS NOT NULL AND m.enter_coil_no LIKE CONCAT(#{enterCoilNo}, '%') SELECT base.*, CASE WHEN base.raw_end_date < base.start_date THEN base.start_date ELSE base.raw_end_date END AS end_date, CASE WHEN DATEDIFF( CASE WHEN base.raw_end_date < base.start_date THEN base.start_date ELSE base.raw_end_date END, base.start_date ) < 0 THEN 1 ELSE DATEDIFF( CASE WHEN base.raw_end_date < base.start_date THEN base.start_date ELSE base.raw_end_date END, base.start_date ) + 1 END AS storage_days FROM ( ) base DELETE FROM wms_cost_coil_daily WHERE calc_date = #{calcDate}