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">
|
|
|
|
|
|
|
|
|
|
|
2025-10-13 21:54:40 +08:00
|
|
|
<select id="list" resultType="com.bonus.material.devchange.domain.MaDevInfo">
|
|
|
|
|
select * from (
|
|
|
|
|
SELECT
|
|
|
|
|
c.company_name AS propertyUnit,
|
|
|
|
|
mdi.ma_id AS maId,
|
|
|
|
|
mdi.device_name AS name,
|
2025-10-14 23:00:05 +08:00
|
|
|
mdi.item_type_model AS specificationModel,
|
2025-10-13 21:54:40 +08:00
|
|
|
mdi.`code` AS code,
|
2025-10-14 23:00:05 +08:00
|
|
|
ms.supplier_name AS manufacturer,
|
2025-10-13 21:54:40 +08:00
|
|
|
mdi.production_date AS productionDate,
|
|
|
|
|
mdi.expiration_time AS expirationTime,
|
|
|
|
|
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 expirationYears,
|
|
|
|
|
IF(STR_TO_DATE(production_date, '%Y-%m-%d') IS NOT NULL, DATEDIFF(CURDATE(), STR_TO_DATE(production_date,
|
|
|
|
|
'%Y-%m-%d')), 0) AS daysDiff,
|
|
|
|
|
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 yearsDiff,
|
|
|
|
|
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 remainingDays,
|
|
|
|
|
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 remainingYears,
|
|
|
|
|
CASE
|
|
|
|
|
WHEN STR_TO_DATE(expiration_time, '%Y-%m-%d') IS NOT NULL
|
2025-09-15 21:56:18 +08:00
|
|
|
AND DATEDIFF(STR_TO_DATE(expiration_time, '%Y-%m-%d'), CURDATE()) > 365
|
|
|
|
|
THEN '正常使用'
|
2025-10-13 21:54:40 +08:00
|
|
|
WHEN STR_TO_DATE(expiration_time, '%Y-%m-%d') IS NOT NULL
|
2025-09-15 21:56:18 +08:00
|
|
|
AND DATEDIFF(STR_TO_DATE(expiration_time, '%Y-%m-%d'), CURDATE()) > 0
|
|
|
|
|
AND DATEDIFF(STR_TO_DATE(expiration_time, '%Y-%m-%d'), CURDATE()) <= 365
|
2025-10-13 21:54:40 +08:00
|
|
|
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 status
|
|
|
|
|
FROM
|
|
|
|
|
ma_dev_info mdi
|
|
|
|
|
LEFT JOIN sys_dept sd ON sd.dept_id = mdi.on_company
|
|
|
|
|
LEFT JOIN bm_company_info c ON sd.dept_id = c.company_id
|
2025-10-14 23:00:05 +08:00
|
|
|
LEFT JOIN ma_supplier ms ON ms.supplier_id = mdi.supplier_id
|
2025-10-13 21:54:40 +08:00
|
|
|
WHERE mdi.is_active = 1 and mdi.entry_status = '1' and mdi.change_status in (1,5)
|
|
|
|
|
<if test="name != null and name != ''">
|
2025-10-14 23:00:05 +08:00
|
|
|
AND mdi.device_name like concat('%',#{name},'%')
|
2025-09-15 23:19:41 +08:00
|
|
|
</if>
|
2025-10-14 23:00:05 +08:00
|
|
|
<if test="manufacturerId != null and manufacturerId != ''">
|
|
|
|
|
AND mdi.supplier_id like concat('%',#{manufacturerId},'%')
|
2025-09-15 23:19:41 +08:00
|
|
|
</if>
|
2025-10-13 21:54:40 +08:00
|
|
|
) a
|
|
|
|
|
<where>
|
|
|
|
|
<if test="actualStartYear != null and actualStartYear != ''">
|
2025-10-27 15:14:42 +08:00
|
|
|
and yearsDiff between #{actualStartYear} and #{actualStopYear}
|
2025-10-13 21:54:40 +08:00
|
|
|
</if>
|
|
|
|
|
<if test="remainingStartYear != null and remainingStartYear != ''">
|
2025-10-27 15:14:42 +08:00
|
|
|
and remainingYears between #{remainingStartYear} and #{remainingStopYear}
|
2025-10-13 21:54:40 +08:00
|
|
|
</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>
|
|
|
|
|
</select>
|
2025-09-15 21:56:18 +08:00
|
|
|
</mapper>
|