update stock_inventory
qualitity = qualitity + #{ew.qualitity},
version = version + 1,
remark = #{ew.remark},
warn_num = #{ew.warnNum},
locked_quantity = locked_quantity + #{ew.lockedQuantity},
update_time = now()
where product_model_id = #{ew.productModelId}
and batch_no is null
and batch_no = #{ew.batchNo}
update stock_inventory
qualitity = qualitity - #{ew.qualitity},
version = version + 1,
remark = #{ew.remark},
update_time = now()
where product_model_id = #{ew.productModelId} and qualitity >= #{ew.qualitity}
and batch_no is null
and batch_no = #{ew.batchNo}
update stock_inventory
set locked = #{locked}
where product_model_id = #{ew.productModelId}
and batch_no is null
and batch_no = #{ew.batchNo}
select si.id,
si.qualitity,
COALESCE(si.locked_quantity, 0) as locked_quantity,
si.product_model_id,
si.create_time,
si.update_time,
COALESCE(si.warn_num, 0) as warn_num,
si.version,
(si.qualitity - COALESCE(si.locked_quantity, 0)) as un_locked_quantity,
pm.model,
si.remark,
pm.unit,
p.product_name
from stock_inventory si
left join product_model pm on si.product_model_id = pm.id
left join product p on pm.product_id = p.id
where 1 = 1
and p.product_name like concat('%',#{ew.productName},'%')
WITH RECURSIVE product_tree AS (
SELECT id
FROM product
WHERE id = #{ew.topParentProductId}
UNION ALL
SELECT p.id
FROM product p
INNER JOIN product_tree pt ON p.parent_id = pt.id
)
select
batch_no,
MAX(qualifiedId) as qualifiedId,
MAX(unQualifiedId) as unQualifiedId,
SUM(qualifiedQuantity) as qualifiedQuantity,
SUM(unQualifiedQuantity) as unQualifiedQuantity,
SUM(qualifiedLockedQuantity) as qualifiedLockedQuantity,
SUM(unQualifiedLockedQuantity) as unQualifiedLockedQuantity,
SUM(qualifiedQuantity - qualifiedLockedQuantity - IFNULL(qualifiedPendingOut, 0)) as qualifiedUnLockedQuantity,
SUM(unQualifiedQuantity - unQualifiedLockedQuantity - IFNULL(unQualifiedPendingOut, 0)) as unQualifiedUnLockedQuantity,
SUM(IFNULL(qualifiedPendingOut, 0)) as qualifiedPendingOutQuantity,
SUM(IFNULL(unQualifiedPendingOut, 0)) as unQualifiedPendingOutQuantity,
product_model_id,
MAX(create_time) as create_time,
MAX(update_time) as update_time,
MAX(warn_num) as warn_num,
MAX(version) as version,
model,
MAX(remark) as remark,
unit,
product_name,
product_id,
'combined' as stockType
from (
select
si.batch_no,
si.id as qualifiedId,
null as unQualifiedId,
si.qualitity as qualifiedQuantity,
0 as unQualifiedQuantity,
COALESCE(si.locked_quantity, 0) as locked_quantity,
COALESCE(si.locked_quantity, 0) as qualifiedLockedQuantity,
0 as unQualifiedLockedQuantity,
si.product_model_id,
si.create_time,
si.update_time,
COALESCE(si.warn_num, 0) as warn_num,
si.version,
(si.qualitity - COALESCE(si.locked_quantity, 0)) as un_locked_quantity,
pm.model,
si.remark,
pm.unit,
p.product_name,
p.id as product_id,
(
select IFNULL(SUM(sor.stock_out_num), 0)
from stock_out_record sor
where sor.product_model_id = si.product_model_id
and (si.batch_no is null and sor.batch_no is null or si.batch_no = sor.batch_no)
and sor.type = '0'
and sor.approval_status = 0
) as qualifiedPendingOut,
0 as unqualifiedPendingOut
from stock_inventory si
left join product_model pm on si.product_model_id = pm.id
left join product p on pm.product_id = p.id
union all
select
su.batch_no,
null as qualifiedId,
su.id as unQualifiedId,
0 as qualifiedQuantity,
su.qualitity as unQualifiedQuantity,
COALESCE(su.locked_quantity, 0) as locked_quantity,
0 as qualifiedLockedQuantity,
COALESCE(su.locked_quantity, 0) as unQualifiedLockedQuantity,
su.product_model_id,
su.create_time,
su.update_time,
0 as warn_num,
su.version,
(su.qualitity - COALESCE(su.locked_quantity, 0)) as un_locked_quantity,
pm.model,
su.remark,
pm.unit,
p.product_name,
p.id as product_id,
0 as qualifiedPendingOut,
(
select IFNULL(SUM(sor.stock_out_num), 0)
from stock_out_record sor
where sor.product_model_id = su.product_model_id
and (su.batch_no is null and sor.batch_no is null or su.batch_no = sor.batch_no)
and sor.type = '1'
and sor.approval_status = 0
) as unqualifiedPendingOut
from stock_uninventory su
left join product_model pm on su.product_model_id = pm.id
left join product p on pm.product_id = p.id
) as combined
and combined.product_name in (
select distinct p.product_name
from product p
left join product_model pm on p.id = pm.product_id
where p.product_name like concat('%',#{ew.productName},'%') or pm.model like concat('%',#{ew.productName},'%')
)
and combined.product_id in (select id from product_tree)
group by batch_no, product_model_id, model, unit, product_name, product_id
WITH RECURSIVE product_tree AS (
SELECT id
FROM product
WHERE id = #{ew.topParentProductId}
UNION ALL
SELECT p.id
FROM product p
INNER JOIN product_tree pt ON p.parent_id = pt.id
)
select
SUM(qualifiedQuantity) as qualifiedQuantity,
SUM(unQualifiedQuantity) as unQualifiedQuantity,
SUM(qualifiedLockedQuantity) as qualifiedLockedQuantity,
SUM(unQualifiedLockedQuantity) as unQualifiedLockedQuantity,
model,
unit,
product_name,
MAX(warn_num) as warn_num,
MAX(remark) as remark,
MAX(update_time) as update_time
from (
select
si.qualitity as qualifiedQuantity,
0 as unQualifiedQuantity,
COALESCE(si.locked_quantity, 0) as qualifiedLockedQuantity,
0 as unQualifiedLockedQuantity,
si.product_model_id,
si.create_time,
si.update_time,
COALESCE(si.warn_num, 0) as warn_num,
si.remark,
pm.model,
pm.unit,
p.product_name,
p.id as product_id
from stock_inventory si
left join product_model pm on si.product_model_id = pm.id
left join product p on pm.product_id = p.id
union all
select
0 as qualifiedQuantity,
su.qualitity as unQualifiedQuantity,
0 as qualifiedLockedQuantity,
COALESCE(su.locked_quantity, 0) as unQualifiedLockedQuantity,
su.product_model_id,
su.create_time,
su.update_time,
0 as warn_num,
su.remark,
pm.model,
pm.unit,
p.product_name,
p.id as product_id
from stock_uninventory su
left join product_model pm on su.product_model_id = pm.id
left join product p on pm.product_id = p.id
) as combined
and combined.product_name in (
select distinct p.product_name
from product p
left join product_model pm on p.id = pm.product_id
where p.product_name like concat('%',#{ew.productName},'%') or pm.model like concat('%',#{ew.productName},'%')
)
and combined.product_id in (select id from product_tree)
group by product_model_id, model, unit, product_name
select sir.*,si.qualitity as current_stock,
pm.model,
pm.unit,
p.product_name,
su.nick_name as create_by
from
stock_in_record sir
left join stock_inventory si on sir.product_model_id = si.product_model_id
left join product_model pm on sir.product_model_id = pm.id
left join product p on pm.product_id = p.id
left join sys_user su on sir.create_user = su.user_id
and sir.create_time >= #{ew.reportDate}
and sir.create_time < DATE_ADD(#{ew.reportDate}, INTERVAL 1 DAY)
and sir.create_time >= #{ew.startMonth}
and sir.create_time <= #{ew.endMonth}
SELECT
pm.model,
pm.unit,
p.product_name,
MAX(current_inventory) as current_stock,
SUM(CASE WHEN record_type = 'in' THEN amount ELSE 0 END) as total_stock_in,
SUM(CASE WHEN record_type = 'out' THEN amount ELSE 0 END) as total_stock_out
FROM (
SELECT
product_model_id,
SUM(qualitity) as current_inventory,
0 as amount,
'' as record_type
FROM stock_inventory
GROUP BY product_model_id
UNION ALL
SELECT
product_model_id,
0 as current_inventory,
SUM(stock_in_num) as amount,
'in' as record_type
FROM stock_in_record
type = 0
and stock_in_record.create_time >= #{ew.startMonth}
and stock_in_record.create_time <= #{ew.endMonth}
GROUP BY product_model_id
UNION ALL
SELECT
product_model_id,
0 as current_inventory,
SUM(stock_out_num) as amount,
'out' as record_type
FROM stock_out_record
type = 0
and stock_out_record.create_time >= #{ew.startMonth}
and stock_out_record.create_time <= #{ew.endMonth}
GROUP BY product_model_id
) combined_data
LEFT JOIN product_model pm ON pm.id = combined_data.product_model_id
LEFT JOIN product p ON p.id = pm.product_id
and p.product_name like concat('%',#{ew.productName},'%')
and pm.model like concat('%',#{ew.model},'%')
GROUP BY
pm.model,
pm.unit,
p.product_name
select ifnull(sum(qualitity), 0)
from stock_inventory
select IFNULL(sum(qualitity), 0)
from stock_inventory
where create_time >= #{now}
and create_time < DATE_ADD(#{now}, INTERVAL 1 DAY)
SELECT SUM(total_count)
FROM (SELECT COUNT(*) as total_count
FROM stock_inventory
WHERE create_time >= #{startDate}
AND create_time <= #{endDate}
UNION ALL
SELECT COUNT(*) as total_count
FROM stock_uninventory
WHERE create_time >= #{startDate}
AND create_time <= #{endDate}) AS combined_counts
SELECT DATE(sir.create_time) AS date,
SUM(sir.stock_in_num) AS count
FROM stock_in_record sir
JOIN product_model pm ON sir.product_model_id = pm.id
JOIN product p ON pm.product_id = p.id
WHERE (p.parent_id = #{rootCategoryId} OR p.id = #{rootCategoryId})
AND sir.create_time >= #{startDate}
AND sir.create_time <= #{endDate}
GROUP BY DATE(sir.create_time)
ORDER BY DATE(sir.create_time) ASC
SELECT DATE(sor.create_time) AS date,
SUM(sor.stock_out_num) AS count
FROM stock_out_record sor
JOIN product_model pm ON sor.product_model_id = pm.id
JOIN product p ON pm.product_id = p.id
WHERE (p.parent_id = #{rootCategoryId} OR p.id = #{rootCategoryId})
AND sor.create_time >= #{startDate}
AND sor.create_time <= #{endDate}
GROUP BY DATE(sor.create_time)
ORDER BY DATE(sor.create_time) ASC
SELECT IFNULL(SUM(sor.stock_out_num), 0)
FROM stock_out_record sor
WHERE sor.product_model_id = #{productModelId}
AND (sor.batch_no = #{batchNo} OR (#{batchNo} IS NULL AND sor.batch_no IS NULL))
AND sor.type = #{type}
AND sor.approval_status = 0
select distinct si.product_model_id,
si.batch_no
from stock_inventory si
where si.product_model_id in
#{productModelId}
and si.batch_no is not null
and si.batch_no != ''
and (si.qualitity - ifnull(si.locked_quantity, 0)) > 0
order by si.product_model_id, si.batch_no
select spd.id, spd.batch_no, spd.locked_quantity, (spd.qualitity - IFNULL(sd.qualitity, 0)) as qualitity
from stock_inventory spd
left join (select stock_inventory_id, sum(quantity) as qualitity
from shipping_product_detail
group by stock_inventory_id) as sd on sd.stock_inventory_id = spd.id
where product_model_id = #{productModelId}
select spd.id, spd.batch_no,pm.model,pm.unit,p.product_name, spd.qualitity,spd.product_model_id
from stock_inventory spd
left join product_model pm on pm.id = spd.product_model_id
left join product p on p.id = pm.product_id
where product_model_id = #{productModelId}
select
si.product_model_id,
pm.model ,
pm.unit,
p.product_name
from stock_inventory si
left join product_model pm on si.product_model_id = pm.id
left join product p on pm.product_id = p.id
where 1 = 1
and p.product_name like concat('%',#{ew.productName},'%')
and pm.model like concat('%',#{ew.model},'%')
group by si.product_model_id,
pm.model,
pm.unit,
p.product_name