2025-09-15 21:56:18 +08:00
<?xml version="1.0" encoding="UTF-8" ?>
< !DOCTYPE mapper
2025-09-25 19:20:28 +08:00
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
2025-09-15 21:56:18 +08:00
<mapper namespace= "com.bonus.material.device.mapper.DevMergeMapper" >
<select id= "list" resultType= "com.bonus.material.device.domain.vo.DevMergeVo" >
2025-09-25 19:20:28 +08:00
SELECT
aaa.id AS id,
aaa.create_user AS createUser,
aaa.create_time AS createTime,
aaa.status AS status,
COUNT(bbb.dev_id) AS devCount,
SUM(CASE WHEN mdi.entry_status = 1 THEN 1 ELSE 0 END) AS agree,
SUM(CASE WHEN mdi.entry_status = 2 THEN 1 ELSE 0 END) AS reject
FROM
cs_device_status aaa
LEFT JOIN cs_device_real_dev bbb ON aaa.id = bbb.cs_id
LEFT JOIN ma_dev_info mdi ON bbb.dev_id = mdi.ma_id
where aaa.is_active = 1
<if test= "status != null and status != ''" >
and aaa.status = #{status}
</if>
2025-09-27 11:16:22 +08:00
GROUP BY
aaa.id
ORDER BY aaa.status DESC
2025-09-15 21:56:18 +08:00
</select>
<select id= "devList" resultType= "com.bonus.material.device.domain.vo.DevInfoVo" >
SELECT
2025-09-22 18:53:28 +08:00
mtv.proType,
mtv.mainGx,
mtv.childGx,
mtv.devCategory,
mtv.devSubcategory,
mtv.devName,
mtv.devModel,
mtv.unit_name,
d.ma_id as maId,
d.code as code,
d.identify_code as identifyCode,
d.device_name as deviceName,
d.device_count as deviceCount,
d.brand as brand,
d.model_name as modelName,
d.production_date as productionDate,
d.working_hours as workingHours,
d.serial_number as serialNumber,
d.person as person,
d.person_phone as personPhone,
d.create_time as createTime,
d.update_time as updateTime,
d.own_co as companyId,
sd.dept_name as companyName,
c.operate_address as operateAddress,
d.entry_status AS entryStatus
2025-09-15 21:56:18 +08:00
FROM
2025-09-22 18:53:28 +08:00
cs_device_real_dev cdrd
LEFT JOIN ma_dev_info d ON cdrd.dev_id = d.ma_id
LEFT JOIN sys_dept sd ON d.own_co = sd.dept_id
LEFT JOIN bm_company_info c ON sd.dept_id = c.company_id
LEFT JOIN ma_type_view mtv ON mtv.typeId = d.type_id
2025-09-15 21:56:18 +08:00
<where >
2025-09-22 18:53:28 +08:00
d.is_active='1' and cdrd.cs_id = #{orderId}
2025-09-15 21:56:18 +08:00
<if test= "keyWord != null and keyWord != ''" >
and (
locate(#{keyWord},mtv.mainGx) > 0
or locate(#{keyWord},mtv.childGx) > 0
or locate(#{keyWord},mtv.devCategory) > 0
or locate(#{keyWord},mtv.devSubcategory) > 0
or locate(#{keyWord},mtv.devName) > 0
or locate(#{keyWord},mtv.devModel) > 0
or locate(#{keyWord},c.company_name) > 0
or locate(#{keyWord},d.device_name) > 0
or locate(#{keyWord},d.identify_code) > 0
)
</if>
</where>
</select>
<insert id= "addOrder" useGeneratedKeys= "true" keyProperty= "id" >
2025-09-25 19:20:28 +08:00
INSERT INTO cs_device_status (create_user)
VALUES (#{createUser})
2025-09-15 21:56:18 +08:00
</insert>
<insert id= "insertOrderDevReal" >
2025-09-25 19:20:28 +08:00
INSERT INTO cs_device_real_dev (cs_id, dev_id)
VALUES (#{orderId}, #{maId})
2025-09-15 21:56:18 +08:00
</insert>
<update id= "submitOrder" >
2025-09-22 18:53:28 +08:00
UPDATE cs_device_status
SET status = #{status}
WHERE id = #{id}
2025-09-15 21:56:18 +08:00
</update>
<update id= "updateDeviceStatus" >
2025-09-22 18:57:42 +08:00
UPDATE ma_dev_info
SET entry_status = 0
WHERE ma_id IN (select dev_id
from cs_device_real_dev
where cs_id = #{id})
2025-09-15 21:56:18 +08:00
</update>
<delete id= "delOrder" >
2025-09-25 19:20:28 +08:00
update cs_device_status
set is_active = 0
where id = #{id}
2025-09-15 21:56:18 +08:00
</delete>
<update id= "updateDevice" >
<foreach collection= "list" item= "data" separator= ";" >
UPDATE ma_dev_info SET entry_status = #{data.value} WHERE ma_id = #{data.key}
</foreach>
</update>
<select id= "getDevNoCheck" resultType= "int" >
2025-09-25 19:20:28 +08:00
select count(1)
from ma_dev_info
where ma_id IN (select dev_id
from cs_device_real_dev
where cs_id = #{id})
and is_active = 1
and entry_status = 0
</select>
<select id= "findFirstLevelTypes" resultType= "java.util.Map" >
-- 查询一级类型(顶级类型)
SELECT type_id AS value,
level,
type_name AS label,
parent_id AS parentId
FROM ma_type
WHERE parent_id IS NULL
AND del_flag = '0'; -- 排除已删除的数据
</select>
<select id= "findSecondAndThirdLevelTypes" resultType= "java.util.Map" >
-- 根据一级类型ID查询二、三级类型
-- 假设一级类型ID为: 100( 实际使用时替换为具体的一级类型ID)
SELECT t2.type_id AS value,
t2.level,
t2.type_name AS label,
t2.parent_id AS parentId
FROM ma_type t1
JOIN ma_type t2 ON t1.type_id = t2.parent_id
OR t1.type_id = (SELECT parent_id FROM ma_type WHERE type_id = t2.parent_id)
WHERE t1.type_id = #{firstLevelId} -- 一级类型ID
AND t1.parent_id IS NULL -- 确保t1是一级类型
AND t2.del_flag = '0';
</select>
<select id= "getFourthToSixthLevelTypes" resultType= "java.util.Map" >
-- 根据三级类型ID查询四、五、六级类型
-- 假设三级类型ID为: 300( 实际使用时替换为具体的三级类型ID)
SELECT t.type_id AS value,
t.level,
t.type_name AS label,
t.parent_id AS parentId
FROM ma_type t3
JOIN ma_type t ON t3.type_id = t.parent_id
OR t3.type_id = (SELECT parent_id FROM ma_type WHERE type_id = t.parent_id)
OR t3.type_id = (SELECT parent_id
FROM ma_type
WHERE type_id = (SELECT parent_id FROM ma_type WHERE type_id = t.parent_id))
WHERE t3.type_id = #{thirdLevelId} -- 三级类型ID
AND t.del_flag = '0';
</select>
<select id= "getSecondToFifthLevelTypes" resultType= "java.util.Map" >
-- MySQL 5.x兼容版本: 查询二至五级类型
SELECT
t.type_id AS value,
t.level,
t.type_name AS label,
t.parent_id AS parentId
FROM ma_type t1
-- 二级:直接子节点
LEFT JOIN ma_type t2 ON t1.type_id = t2.parent_id AND t2.del_flag = '0'
-- 三级:二级的子节点
LEFT JOIN ma_type t3 ON t2.type_id = t3.parent_id AND t3.del_flag = '0'
-- 四级:三级的子节点
LEFT JOIN ma_type t4 ON t3.type_id = t4.parent_id AND t4.del_flag = '0'
-- 五级:四级的子节点
LEFT JOIN ma_type t5 ON t4.type_id = t5.parent_id AND t5.del_flag = '0'
-- 合并所有层级结果
JOIN (
SELECT type_id FROM ma_type WHERE parent_id = #{firstLevelId} AND del_flag = '0' -- 二级
UNION
SELECT t3.type_id FROM ma_type t2 JOIN ma_type t3 ON t2.type_id = t3.parent_id WHERE t2.parent_id = #{firstLevelId} AND t3.del_flag = '0' -- 三级
UNION
SELECT t4.type_id FROM ma_type t2 JOIN ma_type t3 ON t2.type_id = t3.parent_id JOIN ma_type t4 ON t3.type_id = t4.parent_id WHERE t2.parent_id = #{firstLevelId} AND t4.del_flag = '0' -- 四级
UNION
SELECT t5.type_id FROM ma_type t2 JOIN ma_type t3 ON t2.type_id = t3.parent_id JOIN ma_type t4 ON t3.type_id = t4.parent_id JOIN ma_type t5 ON t4.type_id = t5.parent_id WHERE t2.parent_id = #{firstLevelId} AND t5.del_flag = '0' -- 五级
) AS all_levels ON t.type_id = all_levels.type_id
WHERE t1.type_id = #{firstLevelId}
AND t1.parent_id IS NULL -- 确保是一级类型
AND t.del_flag = '0';
2025-09-15 21:56:18 +08:00
</select>
</mapper>