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

87 lines
4.0 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">
<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()) &lt;= 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') &lt;= CURDATE()
THEN '已过期'
ELSE '日期无效'
END AS device_status
FROM
ma_dev_info mdi
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>