|
|
@@ -314,7 +314,7 @@
|
|
|
select
|
|
|
<include refid="New_Base_Column_List"></include>,
|
|
|
-- 补全原有业务逻辑中缺失的account字段(ResultMap已有该字段映射)
|
|
|
- CASE WHEN fibs.rn = 1 THEN fi.account ELSE 0 END AS account,
|
|
|
+ CASE WHEN fibs.rn = 1 OR fibs.rn IS NULL THEN fi.account ELSE 0 END AS account,
|
|
|
su.name as operator,
|
|
|
so.name as operator_office,
|
|
|
fibs.report_no,
|
|
|
@@ -327,7 +327,8 @@
|
|
|
art.ID_ as task_id,
|
|
|
art_invalid.ID_ as task_id_invalid,
|
|
|
su1.name as reconciliationPeopleName
|
|
|
- from (
|
|
|
+ from finance_invoice fi
|
|
|
+ left join (
|
|
|
-- 优化:MySQL5.7适配 - 先过滤+排序,再生成行号(减少临时表/文件排序)
|
|
|
select
|
|
|
fib.*,
|
|
|
@@ -337,10 +338,10 @@
|
|
|
SELECT * FROM finance_invoice_base WHERE del_flag = '0' ORDER BY invoice_id, id
|
|
|
) fib,
|
|
|
(select @row_num := 0, @prev_invoice_id := null) as vars
|
|
|
- ) fibs
|
|
|
+ ) fibs on fibs.invoice_id = fi.id
|
|
|
left join program_project_list_info rpr1 on fibs.program_id = rpr1.id
|
|
|
-- 关联主表(原有逻辑不变)
|
|
|
- left join finance_invoice fi on fibs.invoice_id = fi.id
|
|
|
+ -- left join finance_invoice fi on fibs.invoice_id = fi.id
|
|
|
-- 优化明细表行号生成(MySQL5.7适配)
|
|
|
left join (
|
|
|
select
|
|
|
@@ -351,7 +352,7 @@
|
|
|
SELECT * FROM finance_invoice_detail WHERE del_flag = '0' ORDER BY invoice_id, id
|
|
|
) fid,
|
|
|
(select @row_num2 := 0, @prev_invoice_id2 := null) as vars2
|
|
|
- ) detail on fibs.invoice_id = detail.invoice_id and fibs.rn = detail.rn
|
|
|
+ ) detail on detail.invoice_id = fi.id and (fibs.rn = detail.rn or fibs.rn is null)
|
|
|
-- 原有关联表逻辑完全保留
|
|
|
left join sys_user su on fi.create_by_id = su.id and su.del_flag = '0'
|
|
|
left join sys_office so on su.office_id = so.id and so.del_flag = '0'
|
|
|
@@ -363,6 +364,40 @@
|
|
|
${ew.customSqlSegment}
|
|
|
</select>
|
|
|
|
|
|
+ <select id="findListCount" resultType="java.lang.Long">
|
|
|
+ select count(1)
|
|
|
+ from finance_invoice fi
|
|
|
+ left join (
|
|
|
+ -- 优化:MySQL5.7适配 - 先过滤+排序,再生成行号(减少临时表/文件排序)
|
|
|
+ select
|
|
|
+ fib.*,
|
|
|
+ @row_num := if(@prev_invoice_id = fib.invoice_id, @row_num + 1, 1) as rn,
|
|
|
+ @prev_invoice_id := fib.invoice_id
|
|
|
+ from (
|
|
|
+ SELECT * FROM finance_invoice_base WHERE del_flag = '0' ORDER BY invoice_id, id
|
|
|
+ ) fib,
|
|
|
+ (select @row_num := 0, @prev_invoice_id := null) as vars
|
|
|
+ ) fibs on fibs.invoice_id = fi.id
|
|
|
+ left join program_project_list_info rpr1 on fibs.program_id = rpr1.id
|
|
|
+ left join (
|
|
|
+ select
|
|
|
+ fid.*,
|
|
|
+ @row_num2 := if(@prev_invoice_id2 = fid.invoice_id, @row_num2 + 1, 1) as rn,
|
|
|
+ @prev_invoice_id2 := fid.invoice_id
|
|
|
+ from (
|
|
|
+ SELECT * FROM finance_invoice_detail WHERE del_flag = '0' ORDER BY invoice_id, id
|
|
|
+ ) fid,
|
|
|
+ (select @row_num2 := 0, @prev_invoice_id2 := null) as vars2
|
|
|
+ ) detail on detail.invoice_id = fi.id and (fibs.rn = detail.rn or fibs.rn is null)
|
|
|
+ left join sys_user su on fi.create_by_id = su.id and su.del_flag = '0'
|
|
|
+ left join sys_office so on su.office_id = so.id and so.del_flag = '0'
|
|
|
+ left join act_ru_task art on fi.proc_ins_id = art.PROC_INST_ID_
|
|
|
+ left join finance_invoice_invalid invalid on invalid.invoice_id = fi.id and invalid.del_flag = '0'
|
|
|
+ left join act_ru_task art_invalid on invalid.proc_ins_id = art_invalid.PROC_INST_ID_
|
|
|
+ left join sys_user su1 on su1.id = fi.reconciliation_people
|
|
|
+ ${ew.customSqlSegment}
|
|
|
+ </select>
|
|
|
+
|
|
|
|
|
|
<select id="findRedList" resultMap="BaseResultMap">
|
|
|
select
|