From 0b0add0b48a24553e55db4e81bdfce05487eded7 Mon Sep 17 00:00:00 2001 From: chenhao Date: Mon, 29 Dec 2025 09:22:44 +0800 Subject: [PATCH] =?UTF-8?q?refactor(purchase):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E8=AE=A2=E5=8D=95=E6=9F=A5=E8=AF=A2=E7=9A=84?= =?UTF-8?q?=E5=8A=A8=E6=80=81SQL=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将原有的静态字段映射改为根据表名动态选择字段 - 使用choose/when替代if条件判断,提高SQL的可读性 - 重构了bu_todo和bu_todo_completed表的查询逻辑 - 移除了重复的approve_user条件过滤 - 优化了已完成任务表的聚合查询,使用max函数获取最新审批时间 --- .../mapper/sip/OmsPurchaseOrderMapper.xml | 43 ++++++++++++++++--- 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/ruoyi-sip/src/main/resources/mapper/sip/OmsPurchaseOrderMapper.xml b/ruoyi-sip/src/main/resources/mapper/sip/OmsPurchaseOrderMapper.xml index 5cd6cab2..5139b527 100644 --- a/ruoyi-sip/src/main/resources/mapper/sip/OmsPurchaseOrderMapper.xml +++ b/ruoyi-sip/src/main/resources/mapper/sip/OmsPurchaseOrderMapper.xml @@ -116,18 +116,49 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" , t1.status, t1.approve_status, t1.approve_time, t1.approve_node, t1.confirm_status, t1.create_time, t1.update_time, t1.del_flag,t1.version , t1.file_id ,t2.vendor_name,t2.vendor_user,t2.vendor_phone - ,t3.apply_time,t3.process_key,t3.todo_id,t3.task_id - - ,t3.approve_time as todo_approve_time - + + + + ,t3.apply_time,t3.process_key,t3.todo_id,t3.task_id + + + ,t3.apply_time,t3.approve_time as todo_approve_time,t3.process_key + + from oms_purchase_order t1 left join oms_vendor_info t2 on t1.vendor_id = t2.vendor_id - inner join ${tableName} t3 on (t3.process_key in ('purchase_order_online') and t3.approve_user=#{entity.approveUser} and t3.task_name!='商务' and t3.business_key=t1.purchase_no) + inner join + + + (select bt.business_key,bt.apply_time,bt.process_key,bt.todo_id,bt.task_id from bu_todo bt + WHERE + bt.process_key IN ('purchase_order_online') + AND bt.approve_user = #{entity.approveUser} + AND bt.task_name!='商务' + ) + + + (SELECT + business_key, + max(btc.approve_time) approve_time, + max(btc.apply_time) apply_time, + max(btc.process_key) process_key + + FROM + bu_todo_completed btc + WHERE + btc.process_key IN ('purchase_order_online') + AND btc.approve_user = #{entity.approveUser} + AND btc.task_name!='商务' + GROUP BY business_key) + + + t3 on t3.business_key=t1.purchase_no and t1.purchase_no = #{entity.purchaseNo} and t2.vendor_name = #{entity.vendorName} and t1.owner_name = #{entity.ownerName} - and t3.approve_user = #{entity.approveUser} +