2025-09-15 21:56:18 +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">
<mapper namespace= "com.bonus.material.devchange.mapper.MaDevRetireWarningMapper" >
<resultMap id= "BaseResultMap" type= "com.bonus.material.devchange.domain.MaDevInfo" >
<result column= "brand" property= "brand" />
<result column= "code" property= "code" />
<result column= "company_name" property= "companyName" />
<result column= "days_diff" property= "daysDiff" />
<result column= "device_name" property= "deviceName" />
<result column= "device_status" property= "deviceStatus" />
<result column= "expiration_time" property= "expirationTime" />
<result column= "ma_id" property= "maId" />
<result column= "production_date" property= "productionDate" />
<result column= "remaining_days" property= "remainingDays" />
<result column= "remaining_years" property= "remainingYears" />
<result column= "years_diff" property= "yearsDiff" />
2025-09-15 23:19:41 +08:00
<result column= "expiration_years" property= "expirationYears" />
2025-09-15 21:56:18 +08:00
</resultMap>
<select id= "list" resultMap= "BaseResultMap" >
2025-09-15 23:19:41 +08:00
select * from (
2025-09-15 21:56:18 +08:00
SELECT
c.company_name,
mdi.ma_id,
mdi.device_name,
mdi.`code`,
mdi.brand,
mdi.production_date,
mdi.expiration_time,
2025-09-15 23:19:41 +08:00
IF(STR_TO_DATE(production_date, '%Y-%m-%d') IS NOT NULL AND STR_TO_DATE(expiration_time, '%Y-%m-%d') IS NOT NULL, TIMESTAMPDIFF(YEAR, STR_TO_DATE(production_date,
'%Y-%m-%d'), expiration_time), 0) AS expiration_years,
2025-09-15 21:56:18 +08:00
IF(STR_TO_DATE(production_date, '%Y-%m-%d') IS NOT NULL, DATEDIFF(CURDATE(), STR_TO_DATE(production_date,
'%Y-%m-%d')), 0) AS days_diff,
IF(STR_TO_DATE(production_date, '%Y-%m-%d') IS NOT NULL, TIMESTAMPDIFF(YEAR, STR_TO_DATE(production_date,
'%Y-%m-%d'), CURDATE()), 0) AS years_diff,
IF(STR_TO_DATE(expiration_time, '%Y-%m-%d') IS NOT NULL
AND STR_TO_DATE(expiration_time, '%Y-%m-%d') >= CURDATE(), DATEDIFF(STR_TO_DATE(expiration_time, '%Y-%m-%d'),
CURDATE()), 0) AS remaining_days,
IF(STR_TO_DATE(expiration_time, '%Y-%m-%d') IS NOT NULL
AND STR_TO_DATE(expiration_time, '%Y-%m-%d') >= CURDATE(), TIMESTAMPDIFF(YEAR, CURDATE(),
STR_TO_DATE(expiration_time, '%Y-%m-%d')), 0) AS remaining_years,
CASE
WHEN STR_TO_DATE(expiration_time, '%Y-%m-%d') IS NOT NULL
AND DATEDIFF(STR_TO_DATE(expiration_time, '%Y-%m-%d'), CURDATE()) > 365
THEN '正常使用'
WHEN STR_TO_DATE(expiration_time, '%Y-%m-%d') IS NOT NULL
AND DATEDIFF(STR_TO_DATE(expiration_time, '%Y-%m-%d'), CURDATE()) > 0
AND DATEDIFF(STR_TO_DATE(expiration_time, '%Y-%m-%d'), CURDATE()) < = 365
THEN CONCAT('临近', DATEDIFF(STR_TO_DATE(expiration_time, '%Y-%m-%d'), CURDATE()), '天退役')
WHEN STR_TO_DATE(expiration_time, '%Y-%m-%d') IS NOT NULL
AND STR_TO_DATE(expiration_time, '%Y-%m-%d') < = CURDATE()
THEN '已过期'
ELSE '日期无效'
END AS device_status
FROM
ma_dev_info mdi
2025-10-13 14:25:44 +08:00
LEFT JOIN sys_dept sd ON sd.dept_id = mdi.on_company
2025-09-15 21:56:18 +08:00
LEFT JOIN bm_company_info c ON sd.dept_id = c.company_id
2025-09-15 23:19:41 +08:00
WHERE mdi.is_active = 1 and mdi.entry_status = '1' and mdi.change_status in (1,5)
<if test= "deviceName != null and deviceName != ''" >
2025-09-15 21:56:18 +08:00
AND mdi.device_name like concat('%',#{deviceName},'%')
</if>
2025-09-15 23:19:41 +08:00
<if test= "brand != null and brand != ''" >
2025-09-15 21:56:18 +08:00
AND mdi.brand like concat('%',#{brand},'%')
</if>
2025-09-15 23:19:41 +08:00
) a
<where >
<if test= "actualStartYear != null and actualStartYear != ''" >
and years_diff between #{actualStartYear} and #{actualStopYear}
</if>
<if test= "remainingStartYear != null and remainingStartYear != ''" >
and remaining_years between #{remainingStartYear} and #{remainingStopYear}
</if>
<if test= "isWarn != null and isWarn != ''" >
<if test= "isWarn == 1" >
AND device_status != '正常使用'
</if>
<if test= "isWarn == 0" >
AND device_status = '正常使用'
</if>
</if>
</where>
2025-09-15 21:56:18 +08:00
</select>
</mapper>