LEFT JOIN dc_base_transfer_complete tb2 ON tb1.transfer_order_id = tb2.transfer_order_id
WHERE
tb2.transfer_order_id IS NULL
AND tb1.deleted = 0
GROUP BY
bailun_sku,
source_warehouse_code
) tb5
LEFT JOIN (
SELECT
bailun_sku,
source_warehouse_code,
sum( count ) count
FROM
(
SELECT
t1.bailun_sku,
t1.source_warehouse_code,
(case WHEN t2.count > tbb.count then tbb.count else t2.count end) as count,
t1.transfer_order_id
FROM
( SELECT max( create_time ) AS create_time, bailun_sku, source_warehouse_code, transfer_order_id FROM dc_base_transfer_inbound WHERE deleted = 0 GROUP BY bailun_sku, source_warehouse_code, transfer_order_id ) t1
INNER JOIN dc_base_transfer_inbound t2 ON t1.bailun_sku = t2.bailun_sku
AND t1.source_warehouse_code = t2.source_warehouse_code
AND t1.transfer_order_id = t2.transfer_order_id
AND t1.create_time = t2.create_time
LEFT JOIN dc_base_transfer_bale tbb on t1.bailun_sku = tbb.bailun_sku and t1.source_warehouse_code = tbb.source_warehouse_code and t1.transfer_order_id = tbb.transfer_order_id
LEFT JOIN dc_base_transfer_complete tb2 ON t1.transfer_order_id = tb2.transfer_order_id
WHERE
tb2.bailun_sku IS NULL
) tb3
GROUP BY
bailun_sku,
source_warehouse_code
) tb4 ON tb5.bailun_sku = tb4.bailun_sku
AND tb5.source_warehouse_code = tb4.source_warehouse_code
WHERE
(
tb5.count - IFNULL( tb4.count, 0 )) > 0 UNION ALL
SELECT
bailun_sku,
source_warehouse_code,
sum( count ) AS count,
sum( count ) AS countplan
FROM
dc_base_transfer_plan
WHERE
STATUS = 1
AND deleted = 0
GROUP BY
bailun_sku,
source_warehouse_code
) t
GROUP BY
bailun_sku,
source_warehouse_code
bailun_sku AS bailunSku,
source_warehouse_code AS sourceWarehouseCode,
warehouse_code AS warehouseCode,
sum( count ) AS count
FROM
(
SELECT
tb5.bailun_sku bailun_sku,
tb5.source_warehouse_code source_warehouse_code,
tb5.warehouse_code warehouse_code,
( tb5.count - IFNULL( tb4.count, 0 ) ) AS count
FROM
(
SELECT
tb1.bailun_sku,
tb1.source_warehouse_code,
tb1.warehouse_code,
sum( tb1.count ) count
FROM
dc_base_transfer_bale tb1
LEFT JOIN dc_base_transfer_complete tb2 ON tb1.transfer_order_id = tb2.transfer_order_id
WHERE
tb2.transfer_order_id IS NULL
AND tb1.deleted = 0
GROUP BY
bailun_sku,
source_warehouse_code,
warehouse_code
) tb5
LEFT JOIN (
SELECT
bailun_sku,
source_warehouse_code,
warehouse_code,
sum( count ) count
FROM
(
SELECT
t1.bailun_sku,
t1.source_warehouse_code,
t1.warehouse_code,
( CASE WHEN t2.count > tbb.count THEN tbb.count ELSE t2.count END ) AS count,
t1.transfer_order_id
FROM
(
SELECT
max( create_time ) AS create_time,
bailun_sku,
source_warehouse_code,
warehouse_code,
transfer_order_id
FROM
dc_base_transfer_inbound
WHERE
deleted = 0
GROUP BY
bailun_sku,
source_warehouse_code,
warehouse_code,
transfer_order_id
) t1
INNER JOIN dc_base_transfer_inbound t2 ON t1.bailun_sku = t2.bailun_sku
AND t1.source_warehouse_code = t2.source_warehouse_code
AND t1.warehouse_code = t2.warehouse_code
AND t1.transfer_order_id = t2.transfer_order_id
AND t1.create_time = t2.create_time
LEFT JOIN dc_base_transfer_bale tbb ON t1.bailun_sku = tbb.bailun_sku
AND t1.source_warehouse_code = tbb.source_warehouse_code
AND t1.warehouse_code = tbb.warehouse_code
AND t1.transfer_order_id = tbb.transfer_order_id
LEFT JOIN dc_base_transfer_complete tb2 ON t1.transfer_order_id = tb2.transfer_order_id
WHERE
tb2.bailun_sku IS NULL
) tb3
GROUP BY
bailun_sku,
source_warehouse_code,
warehouse_code
) tb4 ON tb5.bailun_sku = tb4.bailun_sku
AND tb5.source_warehouse_code = tb4.source_warehouse_code
AND tb5.warehouse_code = tb4.warehouse_code
WHERE
( tb5.count - IFNULL( tb4.count, 0 ) ) > 0
) t
GROUP BY
bailun_sku,
source_warehouse_code,
warehouse_code
</select>
<insertid="calculateTransferTransitFrom">
insert into dc_daily_transit_from(bailun_sku, warehouse_code, quantity_transfer,quantity_transfer_plan, record_time)
insert into dc_daily_transit_from(bailun_sku, warehouse_code, quantity_transfer,quantity_transfer_plan, record_time, source_warehouse_code)