Bonus-Cloud-Material-Mall/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/devchange/MaDevRetireWarningMapper.xml

75 lines
3.7 KiB
XML
Raw Normal View History

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()) &lt;= 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') &lt;= 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>