221 lines
12 KiB
XML
221 lines
12 KiB
XML
<?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,
|
||
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})
|
||
</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>
|
||
<if test="orderId != null">order_id = #{orderId},</if>
|
||
<if test="applyId != null">apply_id = #{applyId},</if>
|
||
<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>
|
||
<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>
|
||
|
||
<!-- 根据id查询 -->
|
||
<select id="selectById" parameterType="Integer"
|
||
resultType="com.bonus.material.warehousing.domain.WarehousingEntity">
|
||
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>
|
||
|
||
<!-- 条件查询列表 -->
|
||
<select id="selectList" parameterType="com.bonus.material.warehousing.domain.WarehousingEntity"
|
||
resultType="com.bonus.material.warehousing.domain.WarehousingEntity">
|
||
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
|
||
<where>
|
||
is_deleted = 0
|
||
<if test="code != null and code != ''">
|
||
AND bw.code LIKE CONCAT('%', #{code}, '%')
|
||
</if>
|
||
<if test="createUser != null and createUser != ''">
|
||
AND bw.create_user LIKE CONCAT('%', #{createUser}, '%')
|
||
</if>
|
||
|
||
<if test="status != null and status != ''">
|
||
AND bw.status = #{status}
|
||
</if>
|
||
<if test="companyId != null and companyId != ''">
|
||
AND su.dept_id = #{companyId}
|
||
</if>
|
||
<if test="startTime != null and endTime != null ">
|
||
and bw.create_time >= #{startTime}
|
||
and bw.create_time < DATE_ADD(#{endTime}, INTERVAL 1 DAY)
|
||
</if>
|
||
</where>
|
||
order by bw.create_time DESC,bw.status
|
||
</select>
|
||
<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>
|
||
|
||
|
||
</mapper> |