工单下达列表页面不显示数据,但数据库中实际存在4条状态为'P'的工单记录。
原始的Mapper XML使用了SQL Server的语法,但项目使用的是MySQL数据库。
WHERE a.Status = 'p'Status = 'P' (大写)WHERE UPPER(a.Status) = 'P'ISNULL(nm.Nbr, '')IFNULL(nm.Nbr, '')b.ItemNum + b.Descr + b.Descr1CONCAT(IFNULL(b.ItemNum, ''), IFNULL(b.Descr, ''), IFNULL(b.Descr1, ''))CONVERT(VARCHAR(10), a.OrdDate, 120)DATE_FORMAT(a.OrdDate, '%Y-%m-%d')yudao-order-server/src/main/resources/mapper/order/WorkOrdMasterMapper.xml
<!-- 修改前 -->
WHERE a.Status = 'p'
<!-- 修改后 -->
WHERE UPPER(a.Status) = 'P'
<!-- 修改前 -->
ISNULL(nm.Nbr, '') as PrevNbr,
ISNULL(nm1.Nbr, '') as Nbr,
b.ItemNum + b.Descr + b.Descr1 as wl,
<!-- 修改后 -->
IFNULL(nm.Nbr, '') as PrevNbr,
IFNULL(nm1.Nbr, '') as Nbr,
CONCAT(IFNULL(b.ItemNum, ''), IFNULL(b.Descr, ''), IFNULL(b.Descr1, '')) as wl,
<!-- 修改前 -->
<if test="reqVO.ordDate != null and reqVO.ordDate != ''">
AND CONVERT(VARCHAR(10), a.OrdDate, 120) = #{reqVO.ordDate}
</if>
<!-- 修改后 -->
<if test="reqVO.ordDate != null and reqVO.ordDate != ''">
AND DATE_FORMAT(a.OrdDate, '%Y-%m-%d') = #{reqVO.ordDate}
</if>
SELECT
a.RecID as id,
a.Domain,
a.Drawing,
a.DueDate,
a.Typed,
a.WorkOrd,
a.Batch,
a.Priority,
a.OrdDate,
a.ItemNum,
a.Project,
a.QtyOrded,
a.QtyCompleted,
a.Remark,
LOWER(a.Status) as Status,
a.WoTyped,
b.Descr,
b.Descr1,
a.lbrvar,
m.MaterialSituation,
IFNULL(nm.Nbr, '') as PrevNbr,
IFNULL(nm1.Nbr, '') as Nbr,
CONCAT(IFNULL(b.ItemNum, ''), IFNULL(b.Descr, ''), IFNULL(b.Descr1, '')) as wl,
CASE WHEN a.CreateGLforLaborVar = 1 THEN '是' ELSE '否' END as CreateGLforLaborVar
FROM WorkOrdMaster a
LEFT JOIN ItemMaster b ON a.ItemNum = b.ItemNum AND b.Domain = '8010'
LEFT JOIN mes_morder m ON a.WorkOrd = m.morder_no AND a.Domain = m.factory_id
LEFT JOIN NbrMaster nm ON a.Domain = nm.Domain AND a.WorkOrd = nm.WorkOrd AND nm.Type = 'SM' AND nm.TransType = 'PrevProcess'
LEFT JOIN NbrMaster nm1 ON a.Domain = nm1.Domain AND a.WorkOrd = nm1.WorkOrd AND nm1.Type = 'SM' AND nm1.TransType = ''
WHERE UPPER(a.Status) = 'P'
ORDER BY a.Priority DESC, a.OrdDate ASC
成功返回4条工单记录:
| 功能 | SQL Server | MySQL |
|---|---|---|
| NULL值处理 | ISNULL(expr, value) | IFNULL(expr, value) |
| 字符串拼接 | str1 + str2 + str3 | CONCAT(str1, str2, str3) |
| 日期格式化 | CONVERT(VARCHAR(10), date, 120) | DATE_FORMAT(date, '%Y-%m-%d') |
| 大小写转换 | UPPER(str), LOWER(str) | UPPER(str), LOWER(str) (相同) |
数据库兼容性
字段大小写
NULL值处理
日期格式
代码审查
测试覆盖
文档更新
数据库配置
2025-01-14
Kiro AI Assistant
✅ 已修复并验证