|
@@ -312,15 +312,18 @@
|
|
|
|
|
|
|
|
<select id="findList" resultMap="BaseResultMap">
|
|
<select id="findList" resultMap="BaseResultMap">
|
|
|
select
|
|
select
|
|
|
- <include refid="New_Base_Column_List"></include>,
|
|
|
|
|
- -- 补全原有业务逻辑中缺失的account字段(ResultMap已有该字段映射)
|
|
|
|
|
- CASE WHEN fibs.rn = 1 OR fibs.rn IS NULL THEN fi.account ELSE 0 END AS account,
|
|
|
|
|
|
|
+ DISTINCT
|
|
|
|
|
+ <include refid="Base_Column_List"></include>,
|
|
|
su.name as operator,
|
|
su.name as operator,
|
|
|
so.name as operator_office,
|
|
so.name as operator_office,
|
|
|
- fibs.report_no,
|
|
|
|
|
- fibs.program_no,
|
|
|
|
|
- -- 保留原有字段返回(ResultMap未映射不影响SQL执行,仅DTO不接收)
|
|
|
|
|
- CASE WHEN fibs.program_id is null THEN concat('其他:', fibs.program_name) ELSE rpr1.name END as programName,
|
|
|
|
|
|
|
+ -- 项目名称:通过关联子查询获取,避免多行重复
|
|
|
|
|
+ (SELECT CASE
|
|
|
|
|
+ WHEN fib.program_id IS NULL THEN concat('其他:', fib.program_name)
|
|
|
|
|
+ ELSE rpr1.name END
|
|
|
|
|
+ FROM finance_invoice_base fib
|
|
|
|
|
+ LEFT JOIN program_project_list_info rpr1 ON fib.program_id = rpr1.id
|
|
|
|
|
+ WHERE fib.invoice_id = fi.id AND fib.del_flag = '0'
|
|
|
|
|
+ LIMIT 1) as programName,
|
|
|
COALESCE(detail.amount, 0) as amount,
|
|
COALESCE(detail.amount, 0) as amount,
|
|
|
detail.account as accountDetail,
|
|
detail.account as accountDetail,
|
|
|
detail.number as number,
|
|
detail.number as number,
|
|
@@ -328,32 +331,7 @@
|
|
|
art_invalid.ID_ as task_id_invalid,
|
|
art_invalid.ID_ as task_id_invalid,
|
|
|
su1.name as reconciliationPeopleName
|
|
su1.name as reconciliationPeopleName
|
|
|
from finance_invoice fi
|
|
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 finance_invoice fi on fibs.invoice_id = fi.id
|
|
|
|
|
- -- 优化明细表行号生成(MySQL5.7适配)
|
|
|
|
|
- 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 finance_invoice_detail detail on detail.invoice_id = fi.id and detail.del_flag = '0'
|
|
|
left join sys_user su on fi.create_by_id = su.id and su.del_flag = '0'
|
|
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 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 act_ru_task art on fi.proc_ins_id = art.PROC_INST_ID_
|
|
@@ -365,30 +343,9 @@
|
|
|
</select>
|
|
</select>
|
|
|
|
|
|
|
|
<select id="findListCount" resultType="java.lang.Long">
|
|
<select id="findListCount" resultType="java.lang.Long">
|
|
|
- select count(1)
|
|
|
|
|
|
|
+ select count(DISTINCT fi.id)
|
|
|
from finance_invoice fi
|
|
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 finance_invoice_detail detail on detail.invoice_id = fi.id and detail.del_flag = '0'
|
|
|
left join sys_user su on fi.create_by_id = su.id and su.del_flag = '0'
|
|
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 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 act_ru_task art on fi.proc_ins_id = art.PROC_INST_ID_
|