SELECT
w.warehouse_id,
w.warehouse_name,
COUNT(mc.coil_id) as coil_count,
COALESCE(SUM(mc.gross_weight), 0) as total_gross_weight,
COALESCE(SUM(mc.net_weight), 0) as total_net_weight
FROM wms_warehouse w
LEFT JOIN wms_material_coil mc ON w.warehouse_id = mc.warehouse_id
AND mc.data_type = 1
AND mc.del_flag = '0'
and (mc.material_type='成品' or mc.material_type='原料')
and mc.status!=1
WHERE w.del_flag = '0'
AND mc.item_type = #{itemType}
AND mc.item_id = #{itemId}
GROUP BY w.warehouse_id, w.warehouse_name
ORDER BY w.warehouse_id
mc.coil_id,
mc.parent_coil_id,
mc.export_time,
mc.export_by,
mc.enter_coil_no,
mc.current_coil_no,
mc.supplier_coil_no,
mc.data_type,
mc.material_type,
mc.next_warehouse_id,
mc.qrcode_record_id,
mc.team,
mc.has_merge_split,
mc.parent_coil_nos,
mc.item_type,
mc.item_id,
mc.gross_weight,
mc.net_weight,
mc.status,
mc.remark,
mc.warehouse_id,
mc.actual_warehouse_id,
mc.del_flag,
mc.create_time,
mc.update_time,
mc.create_by,
mc.update_by,
mc.quality_status,
mc.trimming_requirement,
mc.packaging_requirement,
mc.packing_status,
mc.length,
mc.actual_length,
mc.actual_width,
mc.actual_thickness,
mc.production_start_time,
mc.production_end_time,
mc.production_duration,
mc.coil_surface_treatment,
mc.reserved_width,
mc.coating_type,
mc.temper_grade,
mc.business_purpose,
mc.is_related_to_order,
mc.exclusive_status,
mc.transfer_type,
mc.theoretical_thickness,
mc.schedule_thickness,
mc.theoretical_length,
mc.chrome_plate_coil_no,
mc.sale_name AS saleName,
mc.contract_no AS contractNo,
w.warehouse_name AS warehouseName,
nw.warehouse_name AS nextWarehouseName,
aw.actual_warehouse_name AS actualWarehouseName,
CASE WHEN mc.item_type = 'raw_material' THEN rm.specification
WHEN mc.item_type = 'product' THEN p.specification
ELSE NULL END AS specification,
CASE WHEN mc.item_type = 'raw_material' THEN rm.material
WHEN mc.item_type = 'product' THEN p.material
ELSE NULL END AS material,
CASE WHEN mc.item_type = 'raw_material' THEN rm.manufacturer
WHEN mc.item_type = 'product' THEN p.manufacturer
ELSE NULL END AS manufacturer,
CASE WHEN mc.item_type = 'raw_material' THEN rm.surface_treatment_desc
WHEN mc.item_type = 'product' THEN p.surface_treatment_desc
ELSE NULL END AS surfaceTreatmentDesc,
CASE WHEN mc.item_type = 'raw_material' THEN rm.zinc_layer
WHEN mc.item_type = 'product' THEN p.zinc_layer
ELSE NULL END AS zincLayer,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.raw_material_name
WHEN mc.item_type = 'product' THEN p.product_name
ELSE NULL
END as itemName,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.raw_material_code
WHEN mc.item_type = 'product' THEN p.product_code
ELSE NULL
END as itemCode,
COALESCE(ca.abnormal_count, 0) AS abnormalCount
FROM wms_material_coil mc
LEFT JOIN wms_warehouse w ON mc.warehouse_id = w.warehouse_id
LEFT JOIN wms_warehouse nw ON mc.next_warehouse_id = nw.warehouse_id
LEFT JOIN wms_actual_warehouse aw ON mc.actual_warehouse_id = aw.actual_warehouse_id
LEFT JOIN wms_raw_material rm ON mc.item_type = 'raw_material' AND mc.item_id = rm.raw_material_id
LEFT JOIN wms_product p ON mc.item_type = 'product' AND mc.item_id = p.product_id
LEFT JOIN (
SELECT coil_id, COUNT(*) AS abnormal_count
FROM wms_coil_abnormal
WHERE del_flag = 0
GROUP BY coil_id
) ca ON mc.coil_id = ca.coil_id
SELECT
${ew.customSqlSegment}
SELECT
,
COALESCE(CASE WHEN aw.actual_warehouse_type = 4 THEN awp.sort_no ELSE aw.sort_no END, 0) AS aw_sort_key,
CASE WHEN aw.actual_warehouse_type = 4 THEN CAST(SUBSTRING_INDEX(aw.actual_warehouse_code, '-', -1) AS UNSIGNED) ELSE 0 END AS aw_layer_key,
COALESCE(aw.actual_warehouse_id, 0) AS aw_id_key
LEFT JOIN wms_actual_warehouse awp ON aw.parent_id = awp.actual_warehouse_id
${ew.customSqlSegment}
SELECT
LEFT JOIN wms_delivery_waybill_detail d ON d.coil_id = mc.coil_id AND d.del_flag = 0
LEFT JOIN wms_delivery_waybill wb ON wb.waybill_id = d.waybill_id AND wb.del_flag = 0
LEFT JOIN wms_delivery_plan pl ON pl.plan_id = wb.plan_id AND pl.del_flag = 0
${ew.customSqlSegment}
SELECT
mc.item_type,
mc.item_id,
w.warehouse_id,
w.warehouse_name,
COUNT(mc.coil_id) as coil_count,
COALESCE(SUM(mc.gross_weight), 0) as total_gross_weight,
COALESCE(SUM(mc.net_weight), 0) as total_net_weight,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.raw_material_name
WHEN mc.item_type = 'product' THEN p.product_name
ELSE NULL
END as itemName,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.raw_material_code
WHEN mc.item_type = 'product' THEN p.product_code
ELSE NULL
END as itemCode,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.specification
WHEN mc.item_type = 'product' THEN p.specification
ELSE NULL
END as specification,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.material
WHEN mc.item_type = 'product' THEN p.material
ELSE NULL
END as material,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.surface_treatment_desc
WHEN mc.item_type = 'product' THEN p.surface_treatment_desc
ELSE NULL
END as surfaceTreatmentDesc,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.zinc_layer
WHEN mc.item_type = 'product' THEN p.zinc_layer
ELSE NULL
END as zincLayer,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.manufacturer
WHEN mc.item_type = 'product' THEN p.manufacturer
ELSE NULL
END as manufacturer
FROM wms_material_coil mc
LEFT JOIN wms_warehouse w ON mc.warehouse_id = w.warehouse_id
LEFT JOIN wms_raw_material rm ON mc.item_type = 'raw_material' AND mc.item_id = rm.raw_material_id
LEFT JOIN wms_product p ON mc.item_type = 'product' AND mc.item_id = p.product_id
WHERE mc.data_type = 1
AND mc.del_flag = '0'
AND (w.del_flag = '0' OR w.del_flag IS NULL)
and (mc.material_type='成品' or mc.material_type='原料')
and mc.status!=1
AND mc.item_type = #{itemType}
AND mc.item_id = #{itemId}
GROUP BY mc.item_type, mc.item_id, w.warehouse_id, w.warehouse_name, itemName, itemCode, specification, material,
surfaceTreatmentDesc, zincLayer, manufacturer
ORDER BY mc.item_type, mc.item_id, w.warehouse_id
SELECT mc.*,
w.warehouse_name AS warehouseName,
aw.actual_warehouse_name AS actualWarehouseName,
CASE WHEN mc.item_type = 'raw_material' THEN rm.specification
WHEN mc.item_type = 'product' THEN p.specification
ELSE NULL END AS specification,
CASE WHEN mc.item_type = 'raw_material' THEN rm.material
WHEN mc.item_type = 'product' THEN p.material
ELSE NULL END AS material,
CASE WHEN mc.item_type = 'raw_material' THEN rm.manufacturer
WHEN mc.item_type = 'product' THEN p.manufacturer
ELSE NULL END AS manufacturer,
CASE WHEN mc.item_type = 'raw_material' THEN rm.surface_treatment_desc
WHEN mc.item_type = 'product' THEN p.surface_treatment_desc
ELSE NULL END AS surfaceTreatmentDesc,
CASE WHEN mc.item_type = 'raw_material' THEN rm.zinc_layer
WHEN mc.item_type = 'product' THEN p.zinc_layer
ELSE NULL END AS zincLayer,
-- 物品名称和编号(用于兼容)
CASE
WHEN mc.item_type = 'raw_material' THEN rm.raw_material_name
WHEN mc.item_type = 'product' THEN p.product_name
ELSE NULL
END as itemName,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.raw_material_code
WHEN mc.item_type = 'product' THEN p.product_code
ELSE NULL
END as itemCode,
-- 异常数量统计
COALESCE(ca.abnormal_count, 0) AS abnormalCount
FROM wms_material_coil mc
LEFT JOIN wms_raw_material rm ON mc.item_type = 'raw_material' AND mc.item_id = rm.raw_material_id
LEFT JOIN wms_product p ON mc.item_type = 'product' AND mc.item_id = p.product_id
LEFT JOIN wms_warehouse w ON mc.warehouse_id = w.warehouse_id
LEFT JOIN wms_actual_warehouse aw ON mc.actual_warehouse_id = aw.actual_warehouse_id
LEFT JOIN (
SELECT coil_id, COUNT(*) AS abnormal_count
FROM wms_coil_abnormal
WHERE del_flag = 0
GROUP BY coil_id
) ca ON mc.coil_id = ca.coil_id
${ew.customSqlSegment}
SELECT
w.actual_warehouse_id,
w.actual_warehouse_name,
COUNT(mc.coil_id) as coil_count,
COALESCE(SUM(mc.gross_weight), 0) as total_gross_weight,
COALESCE(SUM(mc.net_weight), 0) as total_net_weight
FROM wms_actual_warehouse w
LEFT JOIN wms_material_coil mc ON w.actual_warehouse_id = mc.actual_warehouse_id
AND mc.data_type = 1
AND mc.del_flag = '0'
and (mc.material_type='成品' or mc.material_type='原料')
and mc.status!=1
WHERE w.del_flag = '0'
AND mc.item_type = #{itemType}
AND mc.item_id = #{itemId}
GROUP BY w.actual_warehouse_id, w.actual_warehouse_name
ORDER BY w.actual_warehouse_id
SELECT
mc.item_type,
mc.item_id,
w.actual_warehouse_id,
w.actual_warehouse_name,
COUNT(mc.coil_id) as coil_count,
COALESCE(SUM(mc.gross_weight), 0) as total_gross_weight,
COALESCE(SUM(mc.net_weight), 0) as total_net_weight,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.raw_material_name
WHEN mc.item_type = 'product' THEN p.product_name
ELSE NULL
END as itemName,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.raw_material_code
WHEN mc.item_type = 'product' THEN p.product_code
ELSE NULL
END as itemCode,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.specification
WHEN mc.item_type = 'product' THEN p.specification
ELSE NULL
END as specification,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.material
WHEN mc.item_type = 'product' THEN p.material
ELSE NULL
END as material,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.surface_treatment_desc
WHEN mc.item_type = 'product' THEN p.surface_treatment_desc
ELSE NULL
END as surfaceTreatmentDesc,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.zinc_layer
WHEN mc.item_type = 'product' THEN p.zinc_layer
ELSE NULL
END as zincLayer,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.manufacturer
WHEN mc.item_type = 'product' THEN p.manufacturer
ELSE NULL
END as manufacturer
FROM wms_material_coil mc
LEFT JOIN wms_actual_warehouse w ON mc.actual_warehouse_id = w.actual_warehouse_id
LEFT JOIN wms_raw_material rm ON mc.item_type = 'raw_material' AND mc.item_id = rm.raw_material_id
LEFT JOIN wms_product p ON mc.item_type = 'product' AND mc.item_id = p.product_id
WHERE mc.data_type = 1
AND mc.del_flag = '0'
AND (w.del_flag = '0' OR w.del_flag IS NULL)
and (mc.material_type='成品' or mc.material_type='原料')
and mc.status!=1
AND mc.item_type = #{itemType}
AND mc.item_id = #{itemId}
GROUP BY mc.item_type, mc.item_id, w.actual_warehouse_id, w.actual_warehouse_name, itemName, itemCode, specification,
material,surfaceTreatmentDesc, zincLayer, manufacturer
ORDER BY mc.item_type, mc.item_id, w.actual_warehouse_id
SELECT
mc.coil_id AS coilId,
mc.net_weight AS netWeight,
mc.warehouse_id AS warehouseId,
mc.quality_status AS qualityStatus,
mc.team AS team,
mc.create_time AS createTime
FROM wms_material_coil mc
LEFT JOIN wms_raw_material rm ON mc.item_type = 'raw_material' AND mc.item_id = rm.raw_material_id
LEFT JOIN wms_product p ON mc.item_type = 'product' AND mc.item_id = p.product_id
LEFT JOIN wms_warehouse w ON mc.warehouse_id = w.warehouse_id
LEFT JOIN wms_actual_warehouse aw ON mc.actual_warehouse_id = aw.actual_warehouse_id
${ew.customSqlSegment}
SELECT
mc.coil_id AS coilId,
mc.net_weight AS netWeight,
mc.warehouse_id AS warehouseId,
mc.quality_status AS qualityStatus,
mc.team AS team,
mc.create_time AS createTime,
mc.actual_length AS actualLength,
mc.theoretical_length AS theoreticalLength,
mc.theoretical_thickness AS theoreticalThickness
FROM wms_material_coil mc
LEFT JOIN wms_raw_material rm ON mc.item_type = 'raw_material' AND mc.item_id = rm.raw_material_id
LEFT JOIN wms_product p ON mc.item_type = 'product' AND mc.item_id = p.product_id
LEFT JOIN wms_warehouse w ON mc.warehouse_id = w.warehouse_id
LEFT JOIN wms_actual_warehouse aw ON mc.actual_warehouse_id = aw.actual_warehouse_id
${ew.customSqlSegment}
SELECT
-- 类型(中文显示)
CASE
WHEN mc.item_type = 'product' THEN '成品'
WHEN mc.item_type = 'raw_material' THEN '原料'
ELSE mc.item_type
END AS itemTypeDesc,
-- 物品ID
mc.item_id AS itemId,
-- 钢卷ID
mc.coil_id AS coilId,
-- 数据类型
mc.data_type AS dataType,
-- 逻辑库区
w.warehouse_name AS warehouseName,
-- 实际库区
aw.actual_warehouse_name AS actualWarehouseName,
-- 入场卷号
mc.enter_coil_no AS enterCoilNo,
-- 厂家卷号
mc.supplier_coil_no AS supplierCoilNo,
-- 成品卷号
mc.current_coil_no AS currentCoilNo,
-- 日期
mc.create_time AS createTime,
-- 班组
mc.team AS team,
-- 发货时间
mc.export_time AS exportTime,
-- 新增:更新时间(用于发货时间为空时兜底)
mc.update_time AS updateTime,
-- 发货人
mc.export_by AS exportBy,
-- 重量
mc.net_weight AS netWeight,
-- 长度
mc.length AS length,
-- 实测厚度
mc.actual_thickness AS actualThickness,
-- 镀层种类
mc.coating_type AS coatingType,
-- 调制度
mc.temper_grade AS temperGrade,
-- 业务用途
mc.business_purpose AS businessPurpose,
-- 是否与订单相关
mc.is_related_to_order AS isRelatedToOrder,
-- 切边要求
mc.trimming_requirement AS trimmingRequirement,
-- 包装种类
mc.packaging_requirement AS packagingRequirement,
-- 产品状态(直接展示原始值)
mc.quality_status AS qualityStatus,
-- 打包状态(直接展示原始值)
mc.packing_status AS packingStatus,
-- 销售
mc.sale_name AS saleName,
-- 合同
mc.contract_no AS contractNo,
-- 调拨类型
mc.transfer_type AS transferType,
-- 理论厚度
mc.theoretical_thickness AS theoreticalThickness,
-- 排产厚度
mc.schedule_thickness AS scheduleThickness,
-- 理论长度
mc.theoretical_length AS theoreticalLength,
-- 镀铬卷号
mc.chrome_plate_coil_no AS chromePlateCoilNo,
-- 库存状态(中文显示)
CASE
WHEN mc.status = 0 THEN '在库'
WHEN mc.status = 1 THEN '已发货'
ELSE CAST(mc.status AS CHAR)
END AS statusDesc,
-- 备注
mc.remark AS remark,
-- 名称(根据类型从不同表获取)
CASE
WHEN mc.item_type = 'raw_material' THEN rm.raw_material_name
WHEN mc.item_type = 'product' THEN p.product_name
ELSE NULL
END AS itemName,
-- 规格
CASE
WHEN mc.item_type = 'raw_material' THEN rm.specification
WHEN mc.item_type = 'product' THEN p.specification
ELSE NULL
END AS specification,
-- 材质
CASE
WHEN mc.item_type = 'raw_material' THEN rm.material
WHEN mc.item_type = 'product' THEN p.material
ELSE NULL
END AS material,
-- 厂家
CASE
WHEN mc.item_type = 'raw_material' THEN rm.manufacturer
WHEN mc.item_type = 'product' THEN p.manufacturer
ELSE NULL
END AS manufacturer,
-- 表面处理
CASE
WHEN mc.item_type = 'raw_material' THEN rm.surface_treatment_desc
WHEN mc.item_type = 'product' THEN p.surface_treatment_desc
ELSE NULL
END AS surfaceTreatmentDesc,
-- 锌层
CASE
WHEN mc.item_type = 'raw_material' THEN rm.zinc_layer
WHEN mc.item_type = 'product' THEN p.zinc_layer
ELSE NULL
END AS zincLayer
FROM wms_material_coil mc
LEFT JOIN wms_warehouse w ON mc.warehouse_id = w.warehouse_id
LEFT JOIN wms_actual_warehouse aw ON mc.actual_warehouse_id = aw.actual_warehouse_id
LEFT JOIN wms_raw_material rm ON mc.item_type = 'raw_material' AND mc.item_id = rm.raw_material_id
LEFT JOIN wms_product p ON mc.item_type = 'product' AND mc.item_id = p.product_id
${ew.customSqlSegment}
SELECT
-- 钢卷ID
mc.coil_id AS coilId,
-- 发货人
mc.export_by AS exportBy,
-- 类型(中文显示)
CASE
WHEN mc.item_type = 'product' THEN '成品'
WHEN mc.item_type = 'raw_material' THEN '原料'
ELSE mc.item_type
END AS itemTypeDesc,
mc.item_id AS itemId,
mc.data_type AS dataType,
w.warehouse_name AS warehouseName,
aw.actual_warehouse_name AS actualWarehouseName,
mc.enter_coil_no AS enterCoilNo,
mc.supplier_coil_no AS supplierCoilNo,
mc.current_coil_no AS currentCoilNo,
mc.create_time AS createTime,
mc.export_time AS exportTime,
mc.update_time AS updateTime,
mc.net_weight AS netWeight,
mc.length AS length,
mc.coating_type AS coatingType,
mc.temper_grade AS temperGrade,
mc.business_purpose AS businessPurpose,
mc.is_related_to_order AS isRelatedToOrder,
mc.trimming_requirement AS trimmingRequirement,
mc.packaging_requirement AS packagingRequirement,
mc.quality_status AS qualityStatus,
mc.packing_status AS packingStatus,
mc.sale_name AS saleName,
mc.contract_no AS contractNo,
mc.transfer_type AS transferType,
mc.theoretical_thickness AS theoreticalThickness,
mc.schedule_thickness AS scheduleThickness,
mc.theoretical_length AS theoreticalLength,
mc.chrome_plate_coil_no AS chromePlateCoilNo,
CASE
WHEN mc.status = 0 THEN '在库'
WHEN mc.status = 1 THEN '已发货'
ELSE CAST(mc.status AS CHAR)
END AS statusDesc,
mc.remark AS remark,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.raw_material_name
WHEN mc.item_type = 'product' THEN pdt.product_name
ELSE NULL
END AS itemName,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.specification
WHEN mc.item_type = 'product' THEN pdt.specification
ELSE NULL
END AS specification,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.material
WHEN mc.item_type = 'product' THEN pdt.material
ELSE NULL
END AS material,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.manufacturer
WHEN mc.item_type = 'product' THEN pdt.manufacturer
ELSE NULL
END AS manufacturer,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.surface_treatment_desc
WHEN mc.item_type = 'product' THEN pdt.surface_treatment_desc
ELSE NULL
END AS surfaceTreatmentDesc,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.zinc_layer
WHEN mc.item_type = 'product' THEN pdt.zinc_layer
ELSE NULL
END AS zincLayer,
-- 发货计划
pl.plan_id AS planId,
pl.plan_name AS planName,
pl.plan_date AS planDate,
-- 发货单主表
wb.waybill_id AS waybillId,
wb.waybill_no AS waybillNo,
wb.waybill_name AS waybillName,
wb.license_plate AS licensePlate,
wb.consignee_unit AS consigneeUnit,
wb.sender_unit AS senderUnit,
wb.delivery_time AS deliveryTime,
wb.weighbridge AS weighbridge,
wb.sales_person AS salesPerson,
wb.principal AS principal,
wb.principal_phone AS principalPhone,
wb.status AS waybillStatus,
wb.remark AS waybillRemark,
-- 发货单明细
dtl.detail_id AS detailId,
dtl.product_name AS detailProductName,
dtl.edge_type AS detailEdgeType,
dtl.packaging AS detailPackaging,
dtl.settlement_type AS detailSettlementType,
dtl.raw_material_factory AS detailRawMaterialFactory,
dtl.coil_no AS detailCoilNo,
dtl.specification AS detailSpecification,
dtl.material AS detailMaterial,
dtl.quantity AS detailQuantity,
dtl.weight AS detailWeight,
dtl.unit_price AS detailUnitPrice,
dtl.remark AS detailRemark
FROM wms_material_coil mc
LEFT JOIN wms_warehouse w ON mc.warehouse_id = w.warehouse_id
LEFT JOIN wms_actual_warehouse aw ON mc.actual_warehouse_id = aw.actual_warehouse_id
LEFT JOIN wms_raw_material rm ON mc.item_type = 'raw_material' AND mc.item_id = rm.raw_material_id
LEFT JOIN wms_product pdt ON mc.item_type = 'product' AND mc.item_id = pdt.product_id
LEFT JOIN wms_delivery_waybill_detail dtl ON dtl.coil_id = mc.coil_id AND dtl.del_flag = 0
LEFT JOIN wms_delivery_waybill wb ON wb.waybill_id = dtl.waybill_id AND wb.del_flag = 0
LEFT JOIN wms_delivery_plan pl ON pl.plan_id = wb.plan_id AND pl.del_flag = 0
WHERE mc.del_flag = 0
AND mc.coil_id IN
#{id}
ORDER BY mc.create_time DESC
SELECT
mc.coil_id AS coilId,
CASE
WHEN mc.item_type = 'product' THEN '成品'
WHEN mc.item_type = 'raw_material' THEN '原料'
ELSE mc.item_type
END AS itemTypeDesc,
mc.item_id AS itemId,
mc.data_type AS dataType,
w.warehouse_name AS warehouseName,
aw.actual_warehouse_name AS actualWarehouseName,
mc.enter_coil_no AS enterCoilNo,
mc.supplier_coil_no AS supplierCoilNo,
mc.current_coil_no AS currentCoilNo,
mc.create_time AS createTime,
mc.export_time AS exportTime,
mc.update_time AS updateTime,
mc.net_weight AS netWeight,
mc.length AS length,
mc.coating_type AS coatingType,
mc.temper_grade AS temperGrade,
mc.business_purpose AS businessPurpose,
mc.is_related_to_order AS isRelatedToOrder,
mc.trimming_requirement AS trimmingRequirement,
mc.packaging_requirement AS packagingRequirement,
mc.quality_status AS qualityStatus,
mc.packing_status AS packingStatus,
mc.transfer_type AS transferType,
mc.theoretical_thickness AS theoreticalThickness,
mc.schedule_thickness AS scheduleThickness,
mc.theoretical_length AS theoreticalLength,
mc.chrome_plate_coil_no AS chromePlateCoilNo,
CASE
WHEN mc.status = 0 THEN '在库'
WHEN mc.status = 1 THEN '已发货'
ELSE CAST(mc.status AS CHAR)
END AS statusDesc,
mc.remark AS remark,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.raw_material_name
WHEN mc.item_type = 'product' THEN pdt.product_name
ELSE NULL
END AS itemName,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.specification
WHEN mc.item_type = 'product' THEN pdt.specification
ELSE NULL
END AS specification,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.material
WHEN mc.item_type = 'product' THEN pdt.material
ELSE NULL
END AS material,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.manufacturer
WHEN mc.item_type = 'product' THEN pdt.manufacturer
ELSE NULL
END AS manufacturer,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.surface_treatment_desc
WHEN mc.item_type = 'product' THEN pdt.surface_treatment_desc
ELSE NULL
END AS surfaceTreatmentDesc,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.zinc_layer
WHEN mc.item_type = 'product' THEN pdt.zinc_layer
ELSE NULL
END AS zincLayer,
fp.plan_no AS planNo,
fp.plan_start_time AS planStartTime,
fp.actual_start_time AS actualStartTime,
fp.end_time AS endTime,
fp.target_furnace_id AS targetFurnaceId,
f.furnace_name AS targetFurnaceName,
fp.status AS status,
fp.remark AS remark,
fpc.logic_warehouse_id AS logicWarehouseId,
lw.warehouse_name AS logicWarehouseName,
fpc.furnace_level AS furnaceLevel
FROM wms_material_coil mc
LEFT JOIN wms_warehouse w ON mc.warehouse_id = w.warehouse_id
LEFT JOIN wms_actual_warehouse aw ON mc.actual_warehouse_id = aw.actual_warehouse_id
LEFT JOIN wms_raw_material rm ON mc.item_type = 'raw_material' AND mc.item_id = rm.raw_material_id
LEFT JOIN wms_product pdt ON mc.item_type = 'product' AND mc.item_id = pdt.product_id
LEFT JOIN wms_furnace_plan_coil fpc ON fpc.coil_id = mc.coil_id AND fpc.del_flag = 0
LEFT JOIN wms_furnace_plan fp ON fp.plan_id = fpc.plan_id AND fp.del_flag = 0
LEFT JOIN wms_furnace f ON f.furnace_id = fp.target_furnace_id AND f.del_flag = 0
LEFT JOIN wms_warehouse lw ON lw.warehouse_id = fpc.logic_warehouse_id AND lw.del_flag = 0
WHERE mc.del_flag = 0
AND mc.coil_id IN
#{id}
ORDER BY mc.create_time DESC
SELECT mc.*,
w.warehouse_name AS warehouseName,
aw.actual_warehouse_name AS actualWarehouseName,
CASE WHEN mc.item_type = 'raw_material' THEN rm.specification
WHEN mc.item_type = 'product' THEN p.specification
ELSE NULL END AS specification,
CASE WHEN mc.item_type = 'raw_material' THEN rm.material
WHEN mc.item_type = 'product' THEN p.material
ELSE NULL END AS material,
CASE WHEN mc.item_type = 'raw_material' THEN rm.manufacturer
WHEN mc.item_type = 'product' THEN p.manufacturer
ELSE NULL END AS manufacturer,
CASE WHEN mc.item_type = 'raw_material' THEN rm.surface_treatment_desc
WHEN mc.item_type = 'product' THEN p.surface_treatment_desc
ELSE NULL END AS surfaceTreatmentDesc,
CASE WHEN mc.item_type = 'raw_material' THEN rm.zinc_layer
WHEN mc.item_type = 'product' THEN p.zinc_layer
ELSE NULL END AS zincLayer,
-- 物品名称和编号(用于兼容)
CASE
WHEN mc.item_type = 'raw_material' THEN rm.raw_material_name
WHEN mc.item_type = 'product' THEN p.product_name
ELSE NULL
END as itemName,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.raw_material_code
WHEN mc.item_type = 'product' THEN p.product_code
ELSE NULL
END as itemCode
FROM wms_material_coil mc
LEFT JOIN wms_warehouse w ON mc.warehouse_id = w.warehouse_id
LEFT JOIN wms_actual_warehouse aw ON mc.actual_warehouse_id = aw.actual_warehouse_id
LEFT JOIN wms_raw_material rm ON mc.item_type = 'raw_material' AND mc.item_id = rm.raw_material_id
LEFT JOIN wms_product p ON mc.item_type = 'product' AND mc.item_id = p.product_id
WHERE mc.data_type = 1
AND mc.del_flag = 0
AND mc.enter_coil_no IN (
SELECT enter_coil_no
FROM wms_material_coil
WHERE data_type = 1
AND del_flag = 0
AND enter_coil_no IS NOT NULL
AND enter_coil_no != ''
GROUP BY enter_coil_no
HAVING COUNT(*) > 1
)
ORDER BY mc.enter_coil_no, mc.create_time
SELECT mc.*,
w.warehouse_name AS warehouseName,
aw.actual_warehouse_name AS actualWarehouseName,
CASE WHEN mc.item_type = 'raw_material' THEN rm.specification
WHEN mc.item_type = 'product' THEN p.specification
ELSE NULL END AS specification,
CASE WHEN mc.item_type = 'raw_material' THEN rm.material
WHEN mc.item_type = 'product' THEN p.material
ELSE NULL END AS material,
CASE WHEN mc.item_type = 'raw_material' THEN rm.manufacturer
WHEN mc.item_type = 'product' THEN p.manufacturer
ELSE NULL END AS manufacturer,
CASE WHEN mc.item_type = 'raw_material' THEN rm.surface_treatment_desc
WHEN mc.item_type = 'product' THEN p.surface_treatment_desc
ELSE NULL END AS surfaceTreatmentDesc,
CASE WHEN mc.item_type = 'raw_material' THEN rm.zinc_layer
WHEN mc.item_type = 'product' THEN p.zinc_layer
ELSE NULL END AS zincLayer,
-- 物品名称和编号(用于兼容)
CASE
WHEN mc.item_type = 'raw_material' THEN rm.raw_material_name
WHEN mc.item_type = 'product' THEN p.product_name
ELSE NULL
END as itemName,
CASE
WHEN mc.item_type = 'raw_material' THEN rm.raw_material_code
WHEN mc.item_type = 'product' THEN p.product_code
ELSE NULL
END as itemCode
FROM wms_material_coil mc
LEFT JOIN wms_warehouse w ON mc.warehouse_id = w.warehouse_id
LEFT JOIN wms_actual_warehouse aw ON mc.actual_warehouse_id = aw.actual_warehouse_id
LEFT JOIN wms_raw_material rm ON mc.item_type = 'raw_material' AND mc.item_id = rm.raw_material_id
LEFT JOIN wms_product p ON mc.item_type = 'product' AND mc.item_id = p.product_id
WHERE mc.data_type = 1
AND mc.del_flag = 0
AND mc.current_coil_no IN (
SELECT current_coil_no
FROM wms_material_coil
WHERE data_type = 1
AND del_flag = 0
AND current_coil_no IS NOT NULL
AND current_coil_no != ''
GROUP BY current_coil_no
HAVING COUNT(*) > 1
)
ORDER BY mc.current_coil_no, mc.create_time
UPDATE wms_material_coil
SET export_time = NULL,
status = #{status}
WHERE coil_id = #{coilId}
SELECT
SUBSTRING_INDEX(COALESCE(rm.specification, p.specification), '*', 1) AS thickness,
SUBSTRING_INDEX(COALESCE(rm.specification, p.specification), '*', -1) AS width,
CASE
WHEN mc.trimming_requirement = '净边' THEN '净边'
ELSE '毛边'
END AS trimmingRequirement,
COUNT(mc.coil_id) AS coilCount,
COALESCE(SUM(mc.net_weight), 0) AS totalWeight
FROM wms_material_coil mc
LEFT JOIN wms_raw_material rm ON mc.item_id = rm.raw_material_id AND mc.item_type = 'raw_material'
LEFT JOIN wms_product p ON mc.item_id = p.product_id AND mc.item_type = 'product'
WHERE mc.del_flag = 0
AND mc.data_type = 1
AND mc.status = 0
AND (
rm.raw_material_name LIKE '%冷硬卷%'
OR p.product_name LIKE '%冷硬卷%'
)
GROUP BY thickness, width, trimmingRequirement
ORDER BY thickness, width, trimmingRequirement
SELECT
CASE
WHEN rm.raw_material_name LIKE '%热轧卷板%' OR p.product_name LIKE '%热轧卷板%' THEN '热轧卷板'
WHEN rm.raw_material_name LIKE '%冷硬卷%' OR p.product_name LIKE '%冷硬卷%' THEN '冷硬卷'
WHEN rm.raw_material_name LIKE '%冷轧卷%' OR p.product_name LIKE '%冷轧卷%' THEN '冷轧卷'
WHEN rm.raw_material_name LIKE '%镀锌卷%' OR p.product_name LIKE '%镀锌卷%' THEN
CASE
WHEN mc.business_purpose = '毛化镀锌卷' THEN '镀锌钢卷(毛化)'
WHEN mc.business_purpose = '镀锌管料' THEN '镀锌管料'
WHEN mc.business_purpose = '镀锌钢卷' THEN '镀锌钢卷(未光整)'
ELSE '镀锌卷'
END
ELSE '其他'
END AS category,
SUBSTRING_INDEX(COALESCE(rm.specification, p.specification), '*', -1) AS width,
CASE
WHEN mc.trimming_requirement = '净边' THEN '净边'
ELSE '毛边'
END AS isTrimmed,
COALESCE(SUM(mc.net_weight), 0) AS totalWeight
FROM wms_material_coil mc
LEFT JOIN wms_raw_material rm ON mc.item_id = rm.raw_material_id AND mc.item_type = 'raw_material'
LEFT JOIN wms_product p ON mc.item_id = p.product_id AND mc.item_type = 'product'
WHERE mc.del_flag = 0
AND mc.data_type = 1
AND mc.status = 0
AND (
rm.raw_material_name LIKE '%热轧卷板%'
OR p.product_name LIKE '%热轧卷板%'
OR rm.raw_material_name LIKE '%冷硬卷%'
OR p.product_name LIKE '%冷硬卷%'
OR rm.raw_material_name LIKE '%冷轧卷%'
OR p.product_name LIKE '%冷轧卷%'
OR rm.raw_material_name LIKE '%镀锌卷%'
OR p.product_name LIKE '%镀锌卷%'
)
GROUP BY category, width, isTrimmed
ORDER BY category, isTrimmed, width
SELECT mc.*
FROM wms_material_coil mc
WHERE mc.del_flag = 0
AND mc.item_id IS NOT NULL
AND mc.item_type IS NOT NULL
AND NOT EXISTS (
SELECT 1 FROM wms_raw_material rm WHERE rm.raw_material_id = mc.item_id AND rm.del_flag = 0
)
AND NOT EXISTS (
SELECT 1 FROM wms_product wp WHERE wp.product_id = mc.item_id AND wp.del_flag = 0
)
SELECT
IFNULL(SUM(mc.gross_weight), 0) AS total_gross_weight,
IFNULL(SUM(mc.net_weight), 0) AS total_net_weight,
COUNT(mc.coil_id) AS total_count
FROM wms_material_coil mc
LEFT JOIN wms_warehouse w ON mc.warehouse_id = w.warehouse_id
LEFT JOIN wms_warehouse nw ON mc.next_warehouse_id = nw.warehouse_id
LEFT JOIN wms_actual_warehouse aw ON mc.actual_warehouse_id = aw.actual_warehouse_id
LEFT JOIN wms_raw_material rm ON mc.item_type = 'raw_material' AND mc.item_id = rm.raw_material_id
LEFT JOIN wms_product p ON mc.item_type = 'product' AND mc.item_id = p.product_id
LEFT JOIN (
SELECT coil_id, COUNT(*) AS abnormal_count
FROM wms_coil_abnormal
WHERE del_flag = 0
GROUP BY coil_id
) ca ON mc.coil_id = ca.coil_id
${ew.customSqlSegment}
SELECT
COUNT(*) AS total_count,
ROUND(AVG(hoarding_seconds / 86400), 2) AS avg_hoarding_days,
ROUND(AVG(hoarding_seconds / 86400 * net_weight), 2) AS avg_hoarding_cost
FROM (
SELECT
IFNULL(mc.net_weight, 0) AS net_weight,
TIMESTAMPDIFF(SECOND,
FROM_UNIXTIME(JSON_EXTRACT(wgr.content, '$.steps[0].create_time') / 1000),
COALESCE(mc.export_time, mc.update_time)
) AS hoarding_seconds
FROM wms_material_coil mc
INNER JOIN wms_generate_record wgr ON mc.qrcode_record_id = wgr.record_id
AND JSON_EXTRACT(wgr.content, '$.steps[0].create_time') IS NOT NULL
LEFT JOIN wms_warehouse w ON mc.warehouse_id = w.warehouse_id
LEFT JOIN wms_warehouse nw ON mc.next_warehouse_id = nw.warehouse_id
LEFT JOIN wms_actual_warehouse aw ON mc.actual_warehouse_id = aw.actual_warehouse_id
LEFT JOIN wms_raw_material rm ON mc.item_type = 'raw_material' AND mc.item_id = rm.raw_material_id
LEFT JOIN wms_product p ON mc.item_type = 'product' AND mc.item_id = p.product_id
${ew.customSqlSegment}
) t
WHERE t.hoarding_seconds > 0
SELECT warehouse_id, COUNT(*) AS coil_count
FROM wms_material_coil
WHERE del_flag = 0
AND warehouse_id IN
#{wid}
GROUP BY warehouse_id
SELECT mc.*
FROM wms_material_coil mc
WHERE mc.del_flag = 0
AND mc.enter_coil_no IS NOT NULL
AND mc.packing_status IS NOT NULL
AND mc.enter_coil_no IN (
SELECT DISTINCT mci.enter_coil_no
FROM wms_material_coil mci
LEFT JOIN wms_raw_material rm ON mci.item_type = 'raw_material' AND mci.item_id = rm.raw_material_id AND rm.del_flag = 0
WHERE mci.del_flag = 0
AND mci.item_id IS NOT NULL
AND (mci.item_type = 'raw_material' AND rm.raw_material_name LIKE '%热轧卷板%')
)
AND EXISTS (
SELECT 1
FROM wms_material_coil mci2
LEFT JOIN wms_raw_material rm2 ON mci2.item_type = 'raw_material' AND mci2.item_id = rm2.raw_material_id AND rm2.del_flag = 0
WHERE mci2.del_flag = 0
AND mci2.enter_coil_no = mc.enter_coil_no
AND mci2.item_type = 'raw_material'
AND rm2.raw_material_name LIKE '%热轧卷板%'
AND (
rm2.material IS NULL
OR (
mc.packing_status NOT LIKE CONCAT(rm2.material, '%')
AND rm2.material NOT LIKE CONCAT(mc.packing_status, '%')
)
)
)
SELECT rm.material
FROM wms_material_coil mc
LEFT JOIN wms_raw_material rm ON mc.item_type = 'raw_material' AND mc.item_id = rm.raw_material_id AND rm.del_flag = 0
WHERE mc.del_flag = 0
AND mc.enter_coil_no = #{enterCoilNo}
AND mc.item_type = 'raw_material'
AND rm.raw_material_name LIKE '%热轧卷板%'
AND rm.material IS NOT NULL
ORDER BY mc.create_time ASC
LIMIT 1
SELECT COUNT(*) AS total,
SUM(CASE WHEN mc.version_id IS NOT NULL THEN 1 ELSE 0 END) AS synced,
SUM(CASE WHEN mc.version_id IS NULL THEN 1 ELSE 0 END) AS unsynced,
SUM(CASE WHEN mc.data_type = 0 THEN 1 ELSE 0 END) AS movedOn
FROM wms_material_coil mc
LEFT JOIN wms_raw_material rm ON mc.item_type = 'raw_material' AND mc.item_id = rm.raw_material_id AND rm.del_flag = 0
LEFT JOIN wms_product p ON mc.item_type = 'product' AND mc.item_id = p.product_id AND p.del_flag = 0
${ew.customSqlSegment}
SELECT * FROM wms_material_coil
WHERE del_flag = 0
AND parent_coil_id IS NOT NULL
AND parent_coil_id != ''
AND (
FIND_IN_SET(#{id}, parent_coil_id) > 0
)