INSERT INTO bm_warehousing (code, order_id, apply_id,
create_user, user_id)
VALUES (CONCAT(
DATE_FORMAT(NOW(), '%Y%m%d'), -- 日期前缀:yyyyMMdd
'-', -- 添加分隔符
LPAD(
-- 外层子查询规避 MySQL 表引用限制
(SELECT inner_count + 1
FROM (SELECT COUNT(*) AS inner_count
FROM bm_warehousing
WHERE DATE(create_time) = CURDATE()
AND is_deleted = '0') AS temp_table),
4, '0' -- 序号补0到3位(可调整为4位:LPAD(...,4,'0'))
)
), #{orderId}, #{applyId}, #{createUser}, #{userId})
UPDATE bm_warehousing
SET is_deleted = 1
WHERE id = #{id}
UPDATE bm_warehousing
code = #{code},
order_id = #{orderId},
apply_id = #{applyId},
status = #{status},
create_user = #{createUser},
create_time = #{createTime},
approval_user = #{approvalUser},
approval_time = #{approvalTime},
WHERE id = #{id}
update bm_warehousing
set status ='1'
WHERE status in ('0','3') and id in
#{id}
update bm_warehousing
set status ='3'
WHERE status ='1' and id in
#{id}
update bm_warehousing
set status ='2',
approval_time = now(),
approval_user = #{nickName}
WHERE status ='1' and id in
#{id}
SELECT bw.id AS id,
bw.code AS code,
bw.order_id AS orderId,
bw.apply_id AS applyId,
bw.status AS status,
bw.create_user AS createUser,
-- 空值处理:避免create_time为空时DATE_FORMAT返回NULL
DATE_FORMAT(IFNULL(bw.create_time, '1970-01-01 00:00:00'), '%Y-%m-%d %H:%i:%s') AS createTime,
bw.approval_user AS approvalUser,
-- 空值处理:approval_time可能为空,统一格式
DATE_FORMAT(IFNULL(bw.approval_time, '1970-01-01 00:00:00'), '%Y-%m-%d %H:%i:%s') AS approvalTime,
-- 替换子查询为LEFT JOIN,避免逐行子查询的性能损耗
COALESCE(ma_detail.maNum, 0) AS maNum,
COALESCE(tool_detail.toolNum, 0) AS toolNum
FROM bm_warehousing bw
-- 预计算ma_apply_details的计数,关联一次即可
LEFT JOIN (SELECT cs_id, COUNT(1) AS maNum
FROM ma_apply_details
GROUP BY cs_id) ma_detail ON ma_detail.cs_id = bw.order_id
-- 预计算tool_apply_details的计数,关联一次即可
LEFT JOIN (SELECT apply_id, SUM(apply_num) AS toolNum
FROM tool_apply_details
WHERE del_flag = '0'
GROUP BY apply_id) tool_detail ON tool_detail.apply_id = bw.apply_id
WHERE id = #{id}
AND is_deleted = 0
SELECT
bw.id AS id,
bw.code AS code,
bw.order_id AS orderId,
bw.apply_id AS applyId,
bw.status AS status,
bw.create_user AS createUser,
-- 空值处理:避免create_time为空时DATE_FORMAT返回NULL
DATE_FORMAT(IFNULL(bw.create_time, '1970-01-01 00:00:00'), '%Y-%m-%d %H:%i:%s') AS createTime,
bw.approval_user AS approvalUser,
-- 空值处理:approval_time可能为空,统一格式
DATE_FORMAT(IFNULL(bw.approval_time, '1970-01-01 00:00:00'), '%Y-%m-%d %H:%i:%s') AS approvalTime,
-- 替换子查询为LEFT JOIN,避免逐行子查询的性能损耗
COALESCE(ma_detail.maNum, 0) AS maNum,
COALESCE(tool_detail.toolNum, 0) AS toolNum
FROM bm_warehousing bw
LEFT JOIN sys_user su ON su.user_id = bw.user_id
-- 预计算ma_apply_details的计数,关联一次即可
LEFT JOIN (
SELECT cs_id, COUNT(1) AS maNum
FROM ma_apply_details
GROUP BY cs_id
) ma_detail ON ma_detail.cs_id = bw.order_id
-- 预计算tool_apply_details的计数,关联一次即可
LEFT JOIN (
SELECT apply_id, SUM(apply_num) AS toolNum
FROM tool_apply_details WHERE del_flag ='0'
GROUP BY apply_id
) tool_detail ON tool_detail.apply_id = bw.apply_id
is_deleted = 0
AND bw.code LIKE CONCAT('%', #{code}, '%')
AND bw.create_user LIKE CONCAT('%', #{createUser}, '%')
AND bw.status = #{status}
AND su.dept_id = #{companyId}
and bw.create_time >= #{startTime}
and bw.create_time < DATE_ADD(#{endTime}, INTERVAL 1 DAY)
order by bw.create_time DESC,bw.status
SELECT bw.code AS code,
dev.item_type_model AS devModel,
dev.device_name AS name,
dev.CODE AS devCode,
'施工装备' AS devType,
CASE
WHEN mt.actual_level = 5 THEN CONCAT_WS('>', mt.proType, mt.mainGx, mt.childGx, mt.devCategory)
WHEN mt.actual_level = 6 THEN CONCAT_WS('>', mt.proType, mt.mainGx, mt.childGx, mt.devCategory,
mt.devSubcategory)
ELSE CONCAT_WS('>', mt.proType, mt.mainGx, mt.childGx, mt.devCategory, mt.devSubcategory)
END AS category,
dev.identify_code AS identifyCode,
'1' AS num,
bw.create_user AS createUser,
-- 空值处理:避免create_time为空时DATE_FORMAT返回NULL
DATE_FORMAT(IFNULL(bw.create_time, '1970-01-01 00:00:00'), '%Y-%m-%d %H:%i:%s') AS createTime,
bw.approval_user AS approvalUser,
-- 空值处理:approval_time可能为空,统一格式
DATE_FORMAT(IFNULL(bw.approval_time, '1970-01-01 00:00:00'), '%Y-%m-%d %H:%i:%s') AS approvalTime
FROM bm_warehousing bw
LEFT JOIN ma_apply_details mad ON mad.cs_id = bw.order_id
LEFT JOIN ma_dev_info dev ON mad.dev_id = dev.ma_id
INNER JOIN ma_type_view mt ON mt.typeId = dev.type_id
WHERE bw.id = #{id}
UNION ALL
SELECT bw.code AS code,
tt.type_name AS devModel,
tt1.type_name AS name,
ifnull(tl.tool_code, '/') AS devCode,
if(tt.manage_type = '1', '数量工具', '编码工具') AS devType,
CONCAT_WS('>', tt3.type_name, tt2.type_name, tt1.type_name) AS category,
ifnull(tl.identify_code, '/') AS identifyCode,
dc.apply_num AS num,
bw.create_user AS createUser,
-- 空值处理:避免create_time为空时DATE_FORMAT返回NULL
DATE_FORMAT(IFNULL(bw.create_time, '1970-01-01 00:00:00'), '%Y-%m-%d %H:%i:%s') AS createTime,
bw.approval_user AS approvalUser,
-- 空值处理:approval_time可能为空,统一格式
DATE_FORMAT(IFNULL(bw.approval_time, '1970-01-01 00:00:00'), '%Y-%m-%d %H:%i:%s') AS approvalTime
FROM bm_warehousing bw -- 关联工具台账(变更详情的设备编码 = 工具编码)
LEFT JOIN tool_apply_details dc on dc.apply_id = bw.apply_id
LEFT JOIN tool_ledger tl ON tl.id = dc.tool_id
LEFT JOIN tool_type tt ON tl.type_id = tt.type_id
LEFT JOIN tool_type tt1 on tt.parent_id = tt1.type_id
LEFT JOIN tool_type tt2 on tt1.parent_id = tt2.type_id
LEFT JOIN tool_type tt3 on tt2.parent_id = tt3.type_id
LEFT JOIN tool_type tt4 on tt3.parent_id = tt4.type_id AND tt.del_flag = '0'
WHERE bw.id = #{id}
SELECT dev_id AS `key`
FROM ma_apply_details
where cs_id = #{orderId}