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

68 lines
3.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="model_name" property="modelName"/>
<result column="production_date" property="productionDate"/>
<result column="remaining_days" property="remainingDays"/>
<result column="remaining_years" property="remainingYears"/>
<result column="years_diff" property="yearsDiff"/>
</resultMap>
<select id="list" resultMap="BaseResultMap">
SELECT
c.company_name,
mdi.ma_id,
mdi.device_name,
mdi.model_name,
mdi.`code`,
mdi.brand,
mdi.production_date,
mdi.expiration_time,
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.own_co
LEFT JOIN bm_company_info c ON sd.dept_id = c.company_id
WHERE mdi.is_active = 1
<if test="deviceName != null">
AND mdi.device_name like concat('%',#{deviceName},'%')
</if>
<if test="brand != null">
AND mdi.brand like concat('%',#{brand},'%')
</if>
</select>
</mapper>