2025-12-23 16:26:26 +08:00
|
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
|
|
<!DOCTYPE mapper
|
|
|
|
|
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|
|
|
|
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
|
|
|
|
|
|
|
|
|
|
<!-- namespace对应Mapper接口的全限定名 -->
|
|
|
|
|
|
<mapper namespace="com.bonus.material.warehousing.mapper.WarehousingMapper">
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 新增 -->
|
|
|
|
|
|
<insert id="insert" parameterType="com.bonus.material.warehousing.domain.WarehousingEntity" useGeneratedKeys="true"
|
|
|
|
|
|
keyProperty="id">
|
|
|
|
|
|
INSERT INTO bm_warehousing (code, order_id, apply_id,
|
2025-12-29 09:35:54 +08:00
|
|
|
|
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})
|
2025-12-23 16:26:26 +08:00
|
|
|
|
</insert>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 逻辑删除 -->
|
|
|
|
|
|
<update id="deleteById">
|
|
|
|
|
|
UPDATE bm_warehousing
|
|
|
|
|
|
SET is_deleted = 1
|
|
|
|
|
|
WHERE id = #{id}
|
|
|
|
|
|
</update>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 根据id更新 -->
|
|
|
|
|
|
<update id="updateById" parameterType="com.bonus.material.warehousing.domain.WarehousingEntity">
|
|
|
|
|
|
UPDATE bm_warehousing
|
|
|
|
|
|
<set>
|
|
|
|
|
|
<if test="code != null">code = #{code},</if>
|
2025-12-29 09:35:54 +08:00
|
|
|
|
<if test="orderId != null">order_id = #{orderId},</if>
|
|
|
|
|
|
<if test="applyId != null">apply_id = #{applyId},</if>
|
2025-12-23 16:26:26 +08:00
|
|
|
|
<if test="status != null">status = #{status},</if>
|
|
|
|
|
|
<if test="createUser != null">create_user = #{createUser},</if>
|
|
|
|
|
|
<if test="createTime != null">create_time = #{createTime},</if>
|
|
|
|
|
|
<if test="approvalUser != null">approval_user = #{approvalUser},</if>
|
|
|
|
|
|
<if test="approvalTime != null">approval_time = #{approvalTime},</if>
|
|
|
|
|
|
</set>
|
|
|
|
|
|
WHERE id = #{id}
|
|
|
|
|
|
</update>
|
2025-12-29 09:35:54 +08:00
|
|
|
|
<update id="batchSubmission">
|
|
|
|
|
|
update bm_warehousing
|
|
|
|
|
|
set status ='1'
|
|
|
|
|
|
WHERE status in ('0','3') and id in
|
|
|
|
|
|
<foreach item="id" collection="array" open="(" separator="," close=")">
|
|
|
|
|
|
#{id}
|
|
|
|
|
|
</foreach>
|
|
|
|
|
|
</update>
|
|
|
|
|
|
<update id="batchRejection">
|
|
|
|
|
|
update bm_warehousing
|
|
|
|
|
|
set status ='3'
|
|
|
|
|
|
WHERE status ='1' and id in
|
|
|
|
|
|
<foreach item="id" collection="array" open="(" separator="," close=")">
|
|
|
|
|
|
#{id}
|
|
|
|
|
|
</foreach>
|
|
|
|
|
|
</update>
|
|
|
|
|
|
<update id="batchApproval">
|
|
|
|
|
|
update bm_warehousing
|
|
|
|
|
|
set status ='2',
|
|
|
|
|
|
approval_time = now(),
|
|
|
|
|
|
approval_user = #{nickName}
|
|
|
|
|
|
WHERE status ='1' and id in
|
|
|
|
|
|
<foreach item="id" collection="array" open="(" separator="," close=")">
|
|
|
|
|
|
#{id}
|
|
|
|
|
|
</foreach>
|
|
|
|
|
|
</update>
|
2025-12-23 16:26:26 +08:00
|
|
|
|
|
|
|
|
|
|
<!-- 根据id查询 -->
|
|
|
|
|
|
<select id="selectById" parameterType="Integer"
|
|
|
|
|
|
resultType="com.bonus.material.warehousing.domain.WarehousingEntity">
|
2025-12-29 09:35:54 +08:00
|
|
|
|
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
|
2025-12-23 16:26:26 +08:00
|
|
|
|
WHERE id = #{id}
|
|
|
|
|
|
AND is_deleted = 0
|
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 条件查询列表 -->
|
2025-12-29 09:35:54 +08:00
|
|
|
|
<select id="selectList" parameterType="com.bonus.material.warehousing.domain.WarehousingEntity"
|
|
|
|
|
|
resultType="com.bonus.material.warehousing.domain.WarehousingEntity">
|
2025-12-23 16:26:26 +08:00
|
|
|
|
SELECT
|
2025-12-29 09:35:54 +08:00
|
|
|
|
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
|
2025-12-23 16:26:26 +08:00
|
|
|
|
<where>
|
|
|
|
|
|
is_deleted = 0
|
|
|
|
|
|
<if test="code != null and code != ''">
|
2025-12-29 09:35:54 +08:00
|
|
|
|
AND bw.code LIKE CONCAT('%', #{code}, '%')
|
2025-12-23 16:26:26 +08:00
|
|
|
|
</if>
|
|
|
|
|
|
<if test="createUser != null and createUser != ''">
|
2025-12-29 09:35:54 +08:00
|
|
|
|
AND bw.create_user LIKE CONCAT('%', #{createUser}, '%')
|
2025-12-23 16:26:26 +08:00
|
|
|
|
</if>
|
|
|
|
|
|
|
|
|
|
|
|
<if test="status != null and status != ''">
|
2025-12-29 09:35:54 +08:00
|
|
|
|
AND bw.status = #{status}
|
|
|
|
|
|
</if>
|
|
|
|
|
|
<if test="companyId != null and companyId != ''">
|
|
|
|
|
|
AND su.dept_id = #{companyId}
|
2025-12-23 16:26:26 +08:00
|
|
|
|
</if>
|
2025-12-29 09:35:54 +08:00
|
|
|
|
<if test="startTime != null and endTime != null ">
|
|
|
|
|
|
and bw.create_time >= #{startTime}
|
|
|
|
|
|
and bw.create_time < DATE_ADD(#{endTime}, INTERVAL 1 DAY)
|
2025-12-23 16:26:26 +08:00
|
|
|
|
</if>
|
|
|
|
|
|
</where>
|
2025-12-29 09:35:54 +08:00
|
|
|
|
order by bw.create_time DESC,bw.status
|
2025-12-23 16:26:26 +08:00
|
|
|
|
</select>
|
2025-12-29 09:35:54 +08:00
|
|
|
|
<select id="getDevDetails" resultType="com.bonus.material.warehousing.domain.WarehousingRecordEntity">
|
|
|
|
|
|
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>
|
|
|
|
|
|
<select id="getMaIds" resultType="java.lang.String">
|
|
|
|
|
|
SELECT dev_id AS `key`
|
|
|
|
|
|
FROM ma_apply_details
|
|
|
|
|
|
where cs_id = #{orderId}
|
|
|
|
|
|
</select>
|
|
|
|
|
|
|
2025-12-23 16:26:26 +08:00
|
|
|
|
|
|
|
|
|
|
</mapper>
|