Merge branch 'master' into branch20241月中旬

This commit is contained in:
fengchenchen
2024-01-09 15:08:13 +08:00
19 changed files with 1024 additions and 174 deletions
+5
View File
@@ -19,3 +19,8 @@ update sys_permission SET `name` = '撤销来款' WHERE id = '157059954573882572
-- pay_meeting_situation 添加预计到账日期
ALTER TABLE `pay_meeting_situation` ADD COLUMN `estimated_arrival_date` datetime COMMENT '预计到账日期';
-- 添加索引
ALTER TABLE pay_meeting_situation ADD INDEX pm_situation_idx_meeting_id (meeting_id);
ALTER TABLE pay_confirm_payment_record ADD INDEX pcpr_idx_project_id (project_id);
+23 -1
View File
@@ -947,4 +947,26 @@ from (SELECT pwgs.id,
left join pay_confirm_payment_record pcpr on tcp.id = pcpr.project_id
group by tcp.id
) pp
order by pp.createTime;
order by pp.createTime;
create view v_confirm_payment_record as
select project_id,
sum(amount_received) as amount_received,
sum(no_tax_amount) as no_tax_amount,
GROUP_CONCAT(DATE_FORMAT(payment_date, '%Y-%m')) as payment_date
from pay_confirm_payment_record
group by project_id;
create view v_payment_record as
select project_id,
sum(amount_received) as amount_received,
sum(no_tax_amount) as no_tax_amount
from pay_payment_record
group by project_id;
create view v_mail_bill_project as
select project_id,
sum(invoice_amount) as invoice_amount,
sum(no_tax_amount) as no_tax_amount
from pay_mail_bill_project
group by project_id;
+748
View File
@@ -0,0 +1,748 @@
drop view v_statistical;
create view v_statistical as
select pp.id as projectId,
pp.superId,
pp.projectName,
principalName,
chargeCompanyId,
chargeCompanyTemporaryId,
chargeCompanyTemporaryName,
chargeUse,
depart,
createTime,
if(pp.pack = 0, '', '') as packText,
year,
payStatue,
departId,
departCode,
principalNameId,
type,
receivableAmount,
allMoney,
comeAllMoney,
if(billMoney is null, 0, billMoney) as billMoney,
confirmAmount,
paidNoTaxAmount,
invoiceNoTaxAmount,
confirmNoTaxAmount,
contactsName,
confirmDate,
pp.pack
from (SELECT pwgs.id,
pwg.id as superId,
pwg.working_group_project AS projectName,
pwg.principal_name_a as principalName,
pwgs.charge_company_id AS chargeCompanyId,
pwgs.charge_company_temporary_id as chargeCompanyTemporaryId,
pwgs.charge_company_temporary_name AS chargeCompanyTemporaryName,
pwgs.charge_use as chargeUse,
sd.depart_name as depart,
pwgs.pack as pack,
pwg.year as year,
pwgs.in_account as payStatue,
sd.org_code as departCode,
sd.id as departId,
pwg.principal_id_a as principalNameId,
2 as type,
pwgs.receivable_amount as receivableAmount,
pwgs.no_tax_amount as allMoney,
vpr.amount_received as comeAllMoney,
vmbp.invoice_amount AS billMoney,
vcpr.amount_received as confirmAmount,
vpr.no_tax_amount as paidNoTaxAmount,
vmbp.no_tax_amount as invoiceNoTaxAmount,
vcpr.no_tax_amount as confirmNoTaxAmount,
GROUP_CONCAT(DISTINCT pwgsc.contacts_temporary_name order by pwgsc.contacts_temporary_name) as contactsName,
GROUP_CONCAT(DISTINCT DATE_FORMAT(vcpr.payment_date,'%Y-%m')) as confirmDate,
pwgs.create_time as createTime
FROM pay_working_group pwg
right join pay_working_group_subitem pwgs on (pwg.id = pwgs.working_group_id)
left JOIN sys_user su on (pwg.principal_id_a = su.id)
left join sys_depart sd on (su.depart_ids = sd.id)
left JOIN pay_working_group_subitem_contacts pwgsc on pwgsc.working_group_sub_id = pwgs.id
left join v_confirm_payment_record vcpr on pwgs.id = vcpr.project_id
left join v_payment_record vpr on pwgs.id = vpr.project_id
left join v_mail_bill_project vmbp on pwgs.id = vmbp.project_id
group by pwgs.id
union all
SELECT pcp.id,
pcp.id as superId,
pcp.charge_project AS projectName,
pcp.principal_name as principalName,
pcp.charge_company_id AS chargeCompanyId,
pcp.charge_company_temporary_id as chargeCompanyTemporaryId,
pcp.charge_company_temporary_name AS chargeCompanyTemporaryName,
pcp.charge_use as chargeUse,
sd.depart_name as depart,
pcp.pack as pack,
pcp.year as year,
pcp.in_account as payStatue,
sd.org_code as departCode,
sd.id as departId,
pcp.principal_id as principalNameId,
1 as type,
pcp.receivable_amount as receivableAmount,
pcp.no_tax_amount as allMoney,
vpr.amount_received as comeAllMoney,
vmbp.invoice_amount AS billMoney,
vcpr.amount_received as confirmAmount,
vpr.no_tax_amount as paidNoTaxAmount,
vmbp.no_tax_amount as invoiceNoTaxAmount,
vcpr.no_tax_amount as confirmNoTaxAmount,
contacts_temporary_name as contactsName,
vcpr.payment_date as confirmDate,
pcp.create_time as createTime
FROM pay_common_project pcp
left JOIN sys_user su on (pcp.principal_id = su.id)
left join sys_depart sd on (su.depart_ids = sd.id)
left join v_confirm_payment_record vcpr on pcp.id = vcpr.project_id
left join v_payment_record vpr on pcp.id = vpr.project_id
left join v_mail_bill_project vmbp on pcp.id = vmbp.project_id
group by pcp.id
union all
SELECT pmps.id,
pmp.id as superId,
pmp.project_name AS projectName,
su.realname as principalName,
pmps.company_id AS chargeCompanyId,
pmps.company_id as chargeCompanyTemporaryId,
pmps.company_name AS chargeCompanyTemporaryName,
pmps.charge_use as chargeUse,
sd.depart_name as depart,
pmps.pack as pack,
pmp.particular_year as year,
pmps.in_account as payStatue,
sd.org_code as departCode,
sd.id as departId,
pmp.director_id as principalNameId,
4 as type,
pmps.amount_receivable as receivableAmount,
pmps.no_tax_amount as allMoney,
vpr.amount_received as comeAllMoney,
vmbp.invoice_amount AS billMoney,
vcpr.amount_received as confirmAmount,
vpr.no_tax_amount as paidNoTaxAmount,
vmbp.no_tax_amount as invoiceNoTaxAmount,
vcpr.no_tax_amount as confirmNoTaxAmount,
company_contact_name as contactsName,
vcpr.payment_date as confirmDate,
pmps.create_time as createTime
FROM pay_member_project_subitem pmps
left join pay_member_project pmp on (pmp.id = pmps.project_id)
left JOIN sys_user su on (pmp.director_id = su.id)
left join sys_depart sd on (su.depart_ids = sd.id)
left join v_confirm_payment_record vcpr on pmps.id = vcpr.project_id
left join v_payment_record vpr on pmps.id = vpr.project_id
left join v_mail_bill_project vmbp on pmps.id = vmbp.project_id
group by pmps.id
union all
SELECT pms.id,
pm.id as superId,
pm.meeting_name AS projectName,
su.realname as principalName,
pms.company_id AS chargeCompanyId,
pms.company_id as chargeCompanyTemporaryId,
pms.company_name AS chargeCompanyTemporaryName,
pms.charge_use as chargeUse,
sd.depart_name as depart,
pms.pack as pack,
pm.particular_year as year,
pms.in_account as payStatue,
sd.org_code as departCode,
sd.id as departId,
pm.director_id as principalNameId,
3 as type,
pms.amount_receivable as receivableAmount,
pms.no_tax_amount as allMoney,
vpr.amount_received as comeAllMoney,
vmbp.invoice_amount AS billMoney,
vcpr.amount_received as confirmAmount,
vpr.no_tax_amount as paidNoTaxAmount,
vmbp.no_tax_amount as invoiceNoTaxAmount,
vcpr.no_tax_amount as confirmNoTaxAmount,
company_contact_name as contactsName,
vcpr.payment_date as confirmDate,
pms.create_time as createTime
FROM pay_meeting pm
right join pay_meeting_situation pms on (pm.id = pms.meeting_id)
left JOIN sys_user su on (pm.director_id = su.id)
left join sys_depart sd on (su.depart_ids = sd.id)
left join v_confirm_payment_record vcpr on pms.id = vcpr.project_id
left join v_payment_record vpr on pms.id = vpr.project_id
left join v_mail_bill_project vmbp on pms.id = vmbp.project_id
group by pms.id
union all
SELECT tmps.id,
tmp.id as superId,
tmp.project_name AS projectName,
su.realname as principalName,
tmps.company_id AS chargeCompanyId,
tmps.company_id as chargeCompanyTemporaryId,
tmps.company_name AS chargeCompanyTemporaryName,
tmps.charge_use as chargeUse,
sd.depart_name as depart,
tmps.pack as pack,
tmp.year as year,
tmps.in_account as payStatue,
sd.org_code as departCode,
sd.id as departId,
tmp.director_id as principalNameId,
5 as type,
tmps.amount_receivable as receivableAmount,
tmps.no_tax_amount as allMoney,
vpr.amount_received as comeAllMoney,
vmbp.invoice_amount AS billMoney,
vcpr.amount_received as confirmAmount,
vpr.no_tax_amount as paidNoTaxAmount,
vmbp.no_tax_amount as invoiceNoTaxAmount,
vcpr.no_tax_amount as confirmNoTaxAmount,
liaison_man as contactsName,
vcpr.payment_date as confirmDate,
tmps.create_time as createTime
FROM tb_member_project tmp
left join tb_member_project_subitem tmps on (tmp.id = tmps.project_id)
left JOIN sys_user su on (tmp.director_id = su.id)
left join sys_depart sd on (su.depart_ids = sd.id)
left join v_confirm_payment_record vcpr on tmps.id = vcpr.project_id
left join v_payment_record vpr on tmps.id = vpr.project_id
left join v_mail_bill_project vmbp on tmps.id = vmbp.project_id
group by tmps.id
union all
SELECT tcp.id,
tmp.id as superId,
tmp.project_name AS projectName,
su.realname as principalName,
tcp.company_id AS chargeCompanyId,
tcp.company_id as chargeCompanyTemporaryId,
tcp.company_name AS chargeCompanyTemporaryName,
tcp.charge_use as chargeUse,
sd.depart_name as depart,
tcp.pack as pack,
tmp.year as year,
tcp.in_account as payStatue,
sd.org_code as departCode,
sd.id as departId,
tmp.director_id as principalNameId,
6 as type,
tcp.amount_receivable as receivableAmount,
tcp.no_tax_amount as allMoney,
vpr.amount_received as comeAllMoney,
vmbp.invoice_amount AS billMoney,
vcpr.amount_received as confirmAmount,
vpr.no_tax_amount as paidNoTaxAmount,
vmbp.no_tax_amount as invoiceNoTaxAmount,
vcpr.no_tax_amount as confirmNoTaxAmount,
liaison_man as contactsName,
vcpr.payment_date as confirmDate,
tcp.create_time as createTime
FROM tb_member_project tmp
left join tb_certificate_payment tcp on (tmp.id = tcp.project_id)
left JOIN sys_user su on (tmp.director_id = su.id)
left join sys_depart sd on (su.depart_ids = sd.id)
left join v_confirm_payment_record vcpr on tcp.id = vcpr.project_id
left join v_payment_record vpr on tcp.id = vpr.project_id
left join v_mail_bill_project vmbp on tcp.id = vmbp.project_id
group by tcp.id
) pp
where pp.allMoney is not null
and pp.allMoney != 0
order by pp.createTime;
drop view v_statistical_confirm;
create view v_statistical_confirm as
select pp.id as projectId,
pp.superId,
pp.projectName,
principalName,
chargeCompanyId,
chargeCompanyTemporaryId,
chargeCompanyTemporaryName,
chargeUse,
depart,
createTime,
if(pp.pack = 0, '', '') as packText,
year,
payStatue,
departId,
departCode,
principalNameId,
type,
receivableAmount,
allMoney,
comeAllMoney,
if(billMoney is null, 0, billMoney) as billMoney,
confirmAmount,
invoiceNoTaxAmount,
paidNoTaxAmount,
confirmNoTaxAmount,
contactsName,
confirmDate,
pp.pack
from (SELECT pwgs.id,
pwg.id as superId,
pwg.working_group_project AS projectName,
pwg.principal_name_a as principalName,
pwgs.charge_company_id AS chargeCompanyId,
pwgs.charge_company_temporary_id as chargeCompanyTemporaryId,
pwgs.charge_company_temporary_name AS chargeCompanyTemporaryName,
pwgs.charge_use as chargeUse,
sd.depart_name as depart,
pwgs.pack as pack,
pwg.year as year,
pwgs.in_account as payStatue,
sd.org_code as departCode,
sd.id as departId,
pwg.principal_id_a as principalNameId,
2 as type,
pwgs.receivable_amount as receivableAmount,
pwgs.no_tax_amount as allMoney,
vpr.amount_received as comeAllMoney,
vmbp.invoice_amount AS billMoney,
vcpr.amount_received as confirmAmount,
vpr.no_tax_amount as paidNoTaxAmount,
vmbp.no_tax_amount as invoiceNoTaxAmount,
vcpr.no_tax_amount as confirmNoTaxAmount,
(select GROUP_CONCAT(DISTINCT pwgsc.contacts_temporary_name order by pwgsc.contacts_temporary_name) from pay_working_group_subitem_contacts pwgsc where pwgsc.working_group_sub_id = pwgs.id) as contactsName,
vcpr.payment_date as confirmDate,
pwgs.create_time as createTime
FROM pay_working_group pwg
right join pay_working_group_subitem pwgs on (pwg.id = pwgs.working_group_id)
left JOIN sys_user su on (pwg.principal_id_a = su.id)
left join sys_depart sd on (su.depart_ids = sd.id)
left JOIN pay_working_group_subitem_contacts pwgsc on pwgsc.working_group_sub_id = pwgs.id
left join v_confirm_payment_record vcpr on pwgs.id = vcpr.project_id
left join v_payment_record vpr on pwgs.id = vpr.project_id
left join v_mail_bill_project vmbp on pwgs.id = vmbp.project_id
group by pwgs.id
union all
SELECT pcp.id,
pcp.id as superId,
pcp.charge_project AS projectName,
pcp.principal_name as principalName,
pcp.charge_company_id AS chargeCompanyId,
pcp.charge_company_temporary_id as chargeCompanyTemporaryId,
pcp.charge_company_temporary_name AS chargeCompanyTemporaryName,
pcp.charge_use as chargeUse,
sd.depart_name as depart,
pcp.pack as pack,
pcp.year as year,
pcp.in_account as payStatue,
sd.org_code as departCode,
sd.id as departId,
pcp.principal_id as principalNameId,
1 as type,
pcp.receivable_amount as receivableAmount,
pcp.no_tax_amount as allMoney,
vpr.amount_received as comeAllMoney,
vmbp.invoice_amount AS billMoney,
vcpr.amount_received as confirmAmount,
vpr.no_tax_amount as paidNoTaxAmount,
vmbp.no_tax_amount as invoiceNoTaxAmount,
vcpr.no_tax_amount as confirmNoTaxAmount,
contacts_temporary_name as contactsName,
vcpr.payment_date as confirmDate,
pcp.create_time as createTime
FROM pay_common_project pcp
left JOIN sys_user su on (pcp.principal_id = su.id)
left join sys_depart sd on (su.depart_ids = sd.id)
left join v_confirm_payment_record vcpr on pcp.id = vcpr.project_id
left join v_payment_record vpr on pcp.id = vpr.project_id
left join v_mail_bill_project vmbp on pcp.id = vmbp.project_id
group by pcp.id
union all
SELECT pmps.id,
pmp.id as superId,
pmp.project_name AS projectName,
su.realname as principalName,
pmps.company_id AS chargeCompanyId,
pmps.company_id as chargeCompanyTemporaryId,
pmps.company_name AS chargeCompanyTemporaryName,
pmps.charge_use as chargeUse,
sd.depart_name as depart,
pmps.pack as pack,
pmp.particular_year as year,
pmps.in_account as payStatue,
sd.org_code as departCode,
sd.id as departId,
pmp.director_id as principalNameId,
4 as type,
pmps.amount_receivable as receivableAmount,
pmps.no_tax_amount as allMoney,
vpr.amount_received as comeAllMoney,
vmbp.invoice_amount AS billMoney,
vcpr.amount_received as confirmAmount,
vpr.no_tax_amount as paidNoTaxAmount,
vmbp.no_tax_amount as invoiceNoTaxAmount,
vcpr.no_tax_amount as confirmNoTaxAmount,
company_contact_name as contactsName,
vcpr.payment_date as confirmDate,
pmps.create_time as createTime
FROM pay_member_project pmp
right join pay_member_project_subitem pmps on (pmp.id = pmps.project_id)
left JOIN sys_user su on (pmp.director_id = su.id)
left join sys_depart sd on (su.depart_ids = sd.id)
left join v_confirm_payment_record vcpr on pmps.id = vcpr.project_id
left join v_payment_record vpr on pmps.id = vpr.project_id
left join v_mail_bill_project vmbp on pmps.id = vmbp.project_id
group by pmps.id
union all
SELECT pms.id,
pm.id as superId,
pm.meeting_name AS projectName,
su.realname as principalName,
pms.company_id AS chargeCompanyId,
pms.company_id as chargeCompanyTemporaryId,
pms.company_name AS chargeCompanyTemporaryName,
pms.charge_use as chargeUse,
sd.depart_name as depart,
pms.pack as pack,
pm.particular_year as year,
pms.in_account as payStatue,
sd.org_code as departCode,
sd.id as departId,
pm.director_id as principalNameId,
3 as type,
pms.amount_receivable as receivableAmount,
pms.no_tax_amount as allMoney,
vpr.amount_received as comeAllMoney,
vmbp.invoice_amount AS billMoney,
vcpr.amount_received as confirmAmount,
vpr.no_tax_amount as paidNoTaxAmount,
vmbp.no_tax_amount as invoiceNoTaxAmount,
vcpr.no_tax_amount as confirmNoTaxAmount,
company_contact_name as contactsName,
vcpr.payment_date as confirmDate,
pms.create_time as createTime
FROM pay_meeting pm
right join pay_meeting_situation pms on (pm.id = pms.meeting_id)
left JOIN sys_user su on (pm.director_id = su.id)
left join sys_depart sd on (su.depart_ids = sd.id)
left join v_confirm_payment_record vcpr on pms.id = vcpr.project_id
left join v_payment_record vpr on pms.id = vpr.project_id
left join v_mail_bill_project vmbp on pms.id = vmbp.project_id
group by pms.id
union all
SELECT tmps.id,
tmp.id as superId,
tmp.project_name AS projectName,
su.realname as principalName,
tmps.company_id AS chargeCompanyId,
tmps.company_id as chargeCompanyTemporaryId,
tmps.company_name AS chargeCompanyTemporaryName,
tmps.charge_use as chargeUse,
sd.depart_name as depart,
tmps.pack as pack,
tmp.year as year,
tmps.in_account as payStatue,
sd.org_code as departCode,
sd.id as departId,
tmp.director_id as principalNameId,
5 as type,
tmps.amount_receivable as receivableAmount,
tmps.no_tax_amount as allMoney,
vpr.amount_received as comeAllMoney,
vmbp.invoice_amount AS billMoney,
vcpr.amount_received as confirmAmount,
vpr.no_tax_amount as paidNoTaxAmount,
vmbp.no_tax_amount as invoiceNoTaxAmount,
vcpr.no_tax_amount as confirmNoTaxAmount,
liaison_man as contactsName,
vcpr.payment_date as confirmDate,
tmps.create_time as createTime
FROM tb_member_project tmp
left join tb_member_project_subitem tmps on (tmp.id = tmps.project_id)
left JOIN sys_user su on (tmp.director_id = su.id)
left join sys_depart sd on (su.depart_ids = sd.id)
left join v_confirm_payment_record vcpr on tmps.id = vcpr.project_id
left join v_payment_record vpr on tmps.id = vpr.project_id
left join v_mail_bill_project vmbp on tmps.id = vmbp.project_id
group by tmps.id
union all
SELECT tcp.id,
tmp.id as superId,
tmp.project_name AS projectName,
su.realname as principalName,
tcp.company_id AS chargeCompanyId,
tcp.company_id as chargeCompanyTemporaryId,
tcp.company_name AS chargeCompanyTemporaryName,
tcp.charge_use as chargeUse,
sd.depart_name as depart,
tcp.pack as pack,
tmp.year as year,
tcp.in_account as payStatue,
sd.org_code as departCode,
sd.id as departId,
tmp.director_id as principalNameId,
6 as type,
tcp.amount_receivable as receivableAmount,
tcp.no_tax_amount as allMoney,
vpr.amount_received as comeAllMoney,
vmbp.invoice_amount AS billMoney,
vcpr.amount_received as confirmAmount,
vpr.no_tax_amount as paidNoTaxAmount,
vmbp.no_tax_amount as invoiceNoTaxAmount,
vcpr.no_tax_amount as confirmNoTaxAmount,
liaison_man as contactsName,
vcpr.payment_date as confirmDate,
tcp.create_time as createTime
FROM tb_member_project tmp
left join tb_certificate_payment tcp on (tmp.id = tcp.project_id)
left JOIN sys_user su on (tmp.director_id = su.id)
left join sys_depart sd on (su.depart_ids = sd.id)
left join v_confirm_payment_record vcpr on tcp.id = vcpr.project_id
left join v_payment_record vpr on tcp.id = vpr.project_id
left join v_mail_bill_project vmbp on tcp.id = vmbp.project_id
group by tcp.id
) pp
where pp.allMoney is not null
and pp.allMoney != 0
order by pp.createTime;
drop view v_statistical_all;
create view v_statistical_all as
select pp.id as projectId,
pp.superId,
pp.projectName,
principalName,
chargeCompanyId,
chargeCompanyTemporaryId,
chargeCompanyTemporaryName,
chargeUse,
depart,
createTime,
if(pp.pack = 0, '', '') as packText,
year,
payStatue,
departId,
departCode,
principalNameId,
type,
receivableAmount,
allMoney,
comeAllMoney,
billMoney as invoiceAmount,
if(billMoney is null, 0, billMoney) as billMoney,
confirmAmount,
invoiceNoTaxAmount,
paidNoTaxAmount,
confirmNoTaxAmount,
contactsName,
confirmDate,
pp.pack
from (SELECT pwgs.id,
pwg.id as superId,
pwg.working_group_project AS projectName,
pwg.principal_name_a as principalName,
pwgs.charge_company_id AS chargeCompanyId,
pwgs.charge_company_temporary_id as chargeCompanyTemporaryId,
pwgs.charge_company_temporary_name AS chargeCompanyTemporaryName,
pwgs.charge_use as chargeUse,
sd.depart_name as depart,
pwgs.pack as pack,
pwg.year as year,
pwgs.in_account as payStatue,
sd.org_code as departCode,
sd.id as departId,
pwg.principal_id_a as principalNameId,
2 as type,
pwgs.receivable_amount as receivableAmount,
pwgs.no_tax_amount as allMoney,
vpr.amount_received as comeAllMoney,
vmbp.invoice_amount AS billMoney,
vcpr.amount_received as confirmAmount,
vpr.no_tax_amount as paidNoTaxAmount,
vmbp.no_tax_amount as invoiceNoTaxAmount,
vcpr.no_tax_amount as confirmNoTaxAmount,
GROUP_CONCAT(DISTINCT pwgsc.contacts_temporary_name order by pwgsc.contacts_temporary_name) as contactsName,
vcpr.payment_date as confirmDate,
pwgs.create_time as createTime
FROM pay_working_group pwg
right join pay_working_group_subitem pwgs on (pwg.id = pwgs.working_group_id)
left JOIN sys_user su on (pwg.principal_id_a = su.id)
left join sys_depart sd on (su.depart_ids = sd.id)
left JOIN pay_working_group_subitem_contacts pwgsc on pwgsc.working_group_sub_id = pwgs.id
left join v_confirm_payment_record vcpr on pwgs.id = vcpr.project_id
left join v_payment_record vpr on pwgs.id = vpr.project_id
left join v_mail_bill_project vmbp on pwgs.id = vmbp.project_id
group by pwgs.id
union all
SELECT pcp.id,
pcp.id as superId,
pcp.charge_project AS projectName,
pcp.principal_name as principalName,
pcp.charge_company_id AS chargeCompanyId,
pcp.charge_company_temporary_id as chargeCompanyTemporaryId,
pcp.charge_company_temporary_name AS chargeCompanyTemporaryName,
pcp.charge_use as chargeUse,
sd.depart_name as depart,
pcp.pack as pack,
pcp.year as year,
pcp.in_account as payStatue,
sd.org_code as departCode,
sd.id as departId,
pcp.principal_id as principalNameId,
1 as type,
pcp.receivable_amount as receivableAmount,
pcp.no_tax_amount as allMoney,
vpr.amount_received as comeAllMoney,
vmbp.invoice_amount AS billMoney,
vcpr.amount_received as confirmAmount,
vpr.no_tax_amount as paidNoTaxAmount,
vmbp.no_tax_amount as invoiceNoTaxAmount,
vcpr.no_tax_amount as confirmNoTaxAmount,
contacts_temporary_name as contactsName,
vcpr.payment_date as confirmDate,
pcp.create_time as createTime
FROM pay_common_project pcp
left JOIN sys_user su on (pcp.principal_id = su.id)
left join sys_depart sd on (su.depart_ids = sd.id)
left join v_confirm_payment_record vcpr on pcp.id = vcpr.project_id
left join v_payment_record vpr on pcp.id = vpr.project_id
left join v_mail_bill_project vmbp on pcp.id = vmbp.project_id
group by pcp.id
union all
SELECT pmps.id,
pmp.id as superId,
pmp.project_name AS projectName,
su.realname as principalName,
pmps.company_id AS chargeCompanyId,
pmps.company_id as chargeCompanyTemporaryId,
pmps.company_name AS chargeCompanyTemporaryName,
pmps.charge_use as chargeUse,
sd.depart_name as depart,
pmps.pack as pack,
pmp.particular_year as year,
pmps.in_account as payStatue,
sd.org_code as departCode,
sd.id as departId,
pmp.director_id as principalNameId,
4 as type,
pmps.amount_receivable as receivableAmount,
pmps.no_tax_amount as allMoney,
vpr.amount_received as comeAllMoney,
vmbp.invoice_amount AS billMoney,
vcpr.amount_received as confirmAmount,
vpr.no_tax_amount as paidNoTaxAmount,
vmbp.no_tax_amount as invoiceNoTaxAmount,
vcpr.no_tax_amount as confirmNoTaxAmount,
company_contact_name as contactsName,
vcpr.payment_date as confirmDate,
pmps.create_time as createTime
FROM pay_member_project pmp
right join pay_member_project_subitem pmps on (pmp.id = pmps.project_id)
left JOIN sys_user su on (pmp.director_id = su.id)
left join sys_depart sd on (su.depart_ids = sd.id)
left join v_confirm_payment_record vcpr on pmps.id = vcpr.project_id
left join v_payment_record vpr on pmps.id = vpr.project_id
left join v_mail_bill_project vmbp on pmps.id = vmbp.project_id
group by pmps.id
union all
SELECT pms.id,
pm.id as superId,
pm.meeting_name AS projectName,
su.realname as principalName,
pms.company_id AS chargeCompanyId,
pms.company_id as chargeCompanyTemporaryId,
pms.company_name AS chargeCompanyTemporaryName,
pms.charge_use as chargeUse,
sd.depart_name as depart,
pms.pack as pack,
pm.particular_year as year,
pms.in_account as payStatue,
sd.org_code as departCode,
sd.id as departId,
pm.director_id as principalNameId,
3 as type,
pms.amount_receivable as receivableAmount,
pms.no_tax_amount as allMoney,
vpr.amount_received as comeAllMoney,
vmbp.invoice_amount AS billMoney,
vcpr.amount_received as confirmAmount,
vpr.no_tax_amount as paidNoTaxAmount,
vmbp.no_tax_amount as invoiceNoTaxAmount,
vcpr.no_tax_amount as confirmNoTaxAmount,
company_contact_name as contactsName,
vcpr.payment_date as confirmDate,
pms.create_time as createTime
FROM pay_meeting pm
right join pay_meeting_situation pms on (pm.id = pms.meeting_id)
left JOIN sys_user su on (pm.director_id = su.id)
left join sys_depart sd on (su.depart_ids = sd.id)
left join v_confirm_payment_record vcpr on pms.id = vcpr.project_id
left join v_payment_record vpr on pms.id = vpr.project_id
left join v_mail_bill_project vmbp on pms.id = vmbp.project_id
group by pms.id
union all
SELECT tmps.id,
tmp.id as superId,
tmp.project_name AS projectName,
su.realname as principalName,
tmps.company_id AS chargeCompanyId,
tmps.company_id as chargeCompanyTemporaryId,
tmps.company_name AS chargeCompanyTemporaryName,
tmps.charge_use as chargeUse,
sd.depart_name as depart,
tmps.pack as pack,
tmp.year as year,
tmps.in_account as payStatue,
sd.org_code as departCode,
sd.id as departId,
tmp.director_id as principalNameId,
5 as type,
tmps.amount_receivable as receivableAmount,
tmps.no_tax_amount as allMoney,
vpr.amount_received as comeAllMoney,
vmbp.invoice_amount AS billMoney,
vcpr.amount_received as confirmAmount,
vpr.no_tax_amount as paidNoTaxAmount,
vmbp.no_tax_amount as invoiceNoTaxAmount,
vcpr.no_tax_amount as confirmNoTaxAmount,
liaison_man as contactsName,
vcpr.payment_date as confirmDate,
tmps.create_time as createTime
FROM tb_member_project tmp
left join tb_member_project_subitem tmps on (tmp.id = tmps.project_id)
left JOIN sys_user su on (tmp.director_id = su.id)
left join sys_depart sd on (su.depart_ids = sd.id)
left join v_confirm_payment_record vcpr on tmps.id = vcpr.project_id
left join v_payment_record vpr on tmps.id = vpr.project_id
left join v_mail_bill_project vmbp on tmps.id = vmbp.project_id
group by tmps.id
union all
SELECT tcp.id,
tmp.id as superId,
tmp.project_name AS projectName,
su.realname as principalName,
tcp.company_id AS chargeCompanyId,
tcp.company_id as chargeCompanyTemporaryId,
tcp.company_name AS chargeCompanyTemporaryName,
tcp.charge_use as chargeUse,
sd.depart_name as depart,
tcp.pack as pack,
tmp.year as year,
tcp.in_account as payStatue,
sd.org_code as departCode,
sd.id as departId,
tmp.director_id as principalNameId,
6 as type,
tcp.amount_receivable as receivableAmount,
tcp.no_tax_amount as allMoney,
vpr.amount_received as comeAllMoney,
vmbp.invoice_amount AS billMoney,
vcpr.amount_received as confirmAmount,
vpr.no_tax_amount as paidNoTaxAmount,
vmbp.no_tax_amount as invoiceNoTaxAmount,
vcpr.no_tax_amount as confirmNoTaxAmount,
liaison_man as contactsName,
vcpr.payment_date as confirmDate,
tcp.create_time as createTime
FROM tb_member_project tmp
left join tb_certificate_payment tcp on (tmp.id = tcp.project_id)
left JOIN sys_user su on (tmp.director_id = su.id)
left join sys_depart sd on (su.depart_ids = sd.id)
left join v_confirm_payment_record vcpr on tcp.id = vcpr.project_id
left join v_payment_record vpr on tcp.id = vpr.project_id
left join v_mail_bill_project vmbp on tcp.id = vmbp.project_id
group by tcp.id
) pp
order by pp.createTime;
@@ -25,7 +25,6 @@ import com.jero.company.service.IPayCompanyManagementService;
import com.jero.company.service.IPayContactsManagementService;
import com.jero.config.StaticConfig;
import com.jero.contract.common.PayIncomeContractCommon;
import com.jero.mail.commont.constant;
import com.jero.mail.entity.BillingInfo;
import com.jero.mail.entity.PayMailBill;
import com.jero.mail.entity.PayMailBillProject;
@@ -64,7 +63,6 @@ import com.jero.temporary.entity.PayContactsManagementTemporary;
import com.jero.temporary.service.IPayCompanyManagementTemporaryService;
import com.jero.temporary.service.IPayContactsManagementTemporaryService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.BeanUtils;
@@ -646,150 +644,160 @@ public class PayMailBillServiceImpl extends ServiceImpl<PayMailBillMapper, PayMa
}
// 删除邮寄票据表
removeById(id);
// 更新项目信息
updateProjectInfo(id);
// 删除邮寄票据关联项目表
payMailBillProjectService.removeById(payMailBillProjectObj.getId());
// 更新项目信息
updateProjectInfo(payMailBillProjectObj);
}
public void updateProjectInfo(String id){
//变更5种项目的邮寄状态
LambdaQueryWrapper<PayMailBillProject> queryPayMailBillProject = new LambdaQueryWrapper<>();
queryPayMailBillProject.eq(PayMailBillProject::getBillId,id);
List<PayMailBillProject> list1 = payMailBillProjectService.list(queryPayMailBillProject);
for(PayMailBillProject one:list1) {
if (ObjectUtils.isNotEmpty(one)) {
LambdaQueryWrapper<PayMailBillProject> queryPayMailBillProjectTwo = new LambdaQueryWrapper<>();
queryPayMailBillProjectTwo.eq(PayMailBillProject::getProjectId, one.getProjectId());
List<PayMailBillProject> listPayMailBillProject = payMailBillProjectService.list(queryPayMailBillProjectTwo);
public void updateProjectInfo(PayMailBillProject payMailBillProject){
int makeInvoice=4;
BigDecimal amountReceivable = new BigDecimal("0");//待确收金额
Integer needInvoice = 0;//是否需要发票
BigDecimal invoiceAmount = payMailBillProject.getInvoiceAmount();
if(Objects.isNull(invoiceAmount)){
invoiceAmount = new BigDecimal("0");//本次开票金额
}
BigDecimal oldInvoiceAmount;//开票金额
BigDecimal noTaxAmount = payMailBillProject.getNoTaxAmount();
BigDecimal tax = payMailBillProject.getTax();
if (noTaxAmount == null || tax == null){
noTaxAmount = invoiceAmount.divide(StaticConfig.TAX_RATE_CALCULATE, 2, RoundingMode.HALF_UP);
tax = invoiceAmount.subtract(noTaxAmount);
}
switch (payMailBillProject.getProjectType().toString()) {
// 开票金额
BigDecimal invoice = new BigDecimal("0.00");
// 开票次数
int c = listPayMailBillProject.size();
// 邮寄次数
int y = 0;
if (!CollectionUtils.isEmpty(listPayMailBillProject)) {
BigDecimal b = listPayMailBillProject.stream().map(PayMailBillProject::getInvoiceAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
invoice = invoice.add(b);
List<String> list = listPayMailBillProject.stream().map(PayMailBillProject::getBillId).collect(Collectors.toList());
LambdaQueryWrapper<PayMailBill> queryPayMailBill = new LambdaQueryWrapper<>();
queryPayMailBill.in(PayMailBill::getId, list);
queryPayMailBill.eq(PayMailBill::getPostStatus, ProjectCommon.POST_STATUS1);
List<PayMailBill> listPayMailBill = payMailBillService.list(queryPayMailBill);
y = listPayMailBill.size();
// 普通项目
case PayIncomeContractCommon.PROJECT_TYPE1:
PayCommonProject payCommonProject = payCommonProjectMapper.selectById(payMailBillProject.getProjectId());
amountReceivable = payCommonProject.getReceivableAmount();//应收
needInvoice = payCommonProject.getNeedInvoice();//是否需要发票
oldInvoiceAmount = payCommonProject.getInvoiceAmount();
if(oldInvoiceAmount==null){
oldInvoiceAmount= new BigDecimal("0");
}
//获取项目待确收金额
BigDecimal receivableAmount;
List<PayContactsManagementTemporary> listId = new ArrayList<>();
//判断变更那个项目的邮寄状态
if (GlobalConstants.ONE.equals(one.getProjectType())) {
PayCommonProject payCommonProjectOld = payCommonProjectService.getById(one.getProjectId());
if (Objects.isNull(payCommonProjectOld)) {
throw new JeroBootException("项目不存在!");
}
PayContactsManagementTemporary payCommonProjectTemporary = payContactsManagementTemporaryService.getById(payCommonProjectOld.getContactsTemporaryId());
if (!Objects.isNull(payCommonProjectTemporary)) {
listId.add(payCommonProjectTemporary);
}
receivableAmount = payCommonProjectOld.getReceivableAmount();
PayCommonProject payCommonProject = new PayCommonProject();
if (receivableAmount.compareTo(invoice) == 0 && c == y) {
payCommonProject.setId(one.getProjectId());
payCommonProject.setMail(constant.ONE);
payCommonProjectService.updateById(payCommonProject);
} else if (y <= c && y > 0) {
payCommonProject.setId(one.getProjectId());
payCommonProject.setMail(constant.TWO);
payCommonProjectService.updateById(payCommonProject);
}
} else if (GlobalConstants.TWO.equals(one.getProjectType())) {
PayWorkingGroupSubItem payWorkingGroupSubItemOld = payWorkingGroupSubItemService.getById(one.getProjectId());
if (Objects.isNull(payWorkingGroupSubItemOld)) {
throw new JeroBootException("项目不存在!");
}
PayWorkingGroup payWorkingGroup = payWorkingGroupService.getById(payWorkingGroupSubItemOld.getWorkingGroupId());
if (Objects.isNull(payWorkingGroup)) {
throw new JeroBootException("工作组不存在!");
}
List<PayWorkingGroupSubItemContacts> subItemContacts = payWorkingGroupSubItemContactsMapper.getSubItemContacts(one.getProjectId());
for (PayWorkingGroupSubItemContacts subItemContact : subItemContacts) {
PayContactsManagementTemporary payWorkingTemporary = payContactsManagementTemporaryService.getById(subItemContact.getContactsTemporaryId());
if (!Objects.isNull(payWorkingTemporary)) {
listId.add(payWorkingTemporary);
}
}
receivableAmount = payWorkingGroupSubItemOld.getReceivableAmount();
PayWorkingGroupSubItem payWorkingGroupSubItem = new PayWorkingGroupSubItem();
if (receivableAmount.compareTo(invoice) == 0 && c == y) {
payWorkingGroupSubItem.setId(one.getProjectId());
payWorkingGroupSubItem.setMail(constant.ONE);
payWorkingGroupSubItemService.updateById(payWorkingGroupSubItem);
} else if (y <= c && y > 0) {
payWorkingGroupSubItem.setId(one.getProjectId());
payWorkingGroupSubItem.setMail(constant.TWO);
payWorkingGroupSubItemService.updateById(payWorkingGroupSubItem);
}
} else if (GlobalConstants.THREE.equals(one.getProjectType())) {
PayMeetingSituation meetingPayContactsManagementOld = payMeetingSituationService.getById(one.getProjectId());
if (Objects.isNull(meetingPayContactsManagementOld)) {
throw new JeroBootException("项目不存在!");
}
PayMeeting payMeeting = payMeetingService.getById(meetingPayContactsManagementOld.getMeetingId());
if (Objects.isNull(payMeeting)) {
throw new JeroBootException("会议不存在!");
}
PayContactsManagement meetingPayContactsManagement = payContactsManagementService.getById(meetingPayContactsManagementOld.getContractId());
if (!Objects.isNull(meetingPayContactsManagement)) {
String str = JSON.toJSONString(meetingPayContactsManagement);
PayContactsManagementTemporary meetingTemporary = JSONObject.parseObject(str, PayContactsManagementTemporary.class);
listId.add(meetingTemporary);
}
receivableAmount = meetingPayContactsManagementOld.getAmountReceivable();
PayMeetingSituation payMeetingSituation = new PayMeetingSituation();
if (receivableAmount.compareTo(invoice) == 0 && c == y) {
payMeetingSituation.setId(one.getProjectId());
payMeetingSituation.setMail(constant.ONE);
payMeetingSituationService.updateById(payMeetingSituation);
} else if (y <= c && y > 0) {
payMeetingSituation.setId(one.getProjectId());
payMeetingSituation.setMail(constant.TWO);
payMeetingSituationService.updateById(payMeetingSituation);
}
} else if (GlobalConstants.FORE.equals(one.getProjectType())) {
PayMemberProjectSubitem payMemberProjectSubitemOld = payMemberProjectSubitemService.getById(one.getProjectId());
if (Objects.isNull(payMemberProjectSubitemOld)) {
throw new JeroBootException("项目不存在!");
}
PayMemberProject payMemberProject = memberProjectService.getById(payMemberProjectSubitemOld.getProjectId());
if (Objects.isNull(payMemberProject)) {
throw new JeroBootException("会员项目不存在!");
}
PayContactsManagementTemporary memberTemporary = payContactsManagementTemporaryService.getById(payMemberProjectSubitemOld.getCompanyContactTemporaryId());
if (!Objects.isNull(memberTemporary)) {
listId.add(memberTemporary);
}
receivableAmount = payMemberProjectSubitemOld.getAmountReceivable();
PayMemberProjectSubitem payMemberProjectSubitem = new PayMemberProjectSubitem();
if (receivableAmount.compareTo(invoice) == 0 && c == y) {
payMemberProjectSubitem.setId(one.getProjectId());
payMemberProjectSubitem.setMail(constant.ONE);
payMemberProjectSubitemService.updateById(payMemberProjectSubitem);
} else if (y <= c && y > 0) {
payMemberProjectSubitem.setId(one.getProjectId());
payMemberProjectSubitem.setMail(constant.TWO);
payMemberProjectSubitemService.updateById(payMemberProjectSubitem);
}
//之前开票总额+本次开票金额
invoiceAmount = oldInvoiceAmount.subtract(invoiceAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
//税额
noTaxAmount = payPaymentRecordService.subtractPaidAmount(noTaxAmount,payCommonProject.getInvoiceNoTaxAmount());
tax = payPaymentRecordService.subtractPaidAmount(tax,payCommonProject.getInvoiceTax());
break;
// 工作组项目
case PayIncomeContractCommon.PROJECT_TYPE2:
PayWorkingGroupSubItem workingGroup = payWorkingGroupSubItemMapper.selectById(payMailBillProject.getProjectId());
amountReceivable = workingGroup.getReceivableAmount();//应收
needInvoice = workingGroup.getNeedInvoice();//是否需要发票
oldInvoiceAmount = workingGroup.getInvoiceAmount();
if(oldInvoiceAmount==null){
oldInvoiceAmount= new BigDecimal("0");
}
}
//之前开票总额+本次开票金额
invoiceAmount = oldInvoiceAmount.subtract(invoiceAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
//税额
noTaxAmount = payPaymentRecordService.subtractPaidAmount(noTaxAmount,workingGroup.getInvoiceNoTaxAmount());
tax = payPaymentRecordService.subtractPaidAmount(tax,workingGroup.getInvoiceTax());
break;
//会议项目
case PayIncomeContractCommon.PROJECT_TYPE3:
PayMeetingSituation meeting = payMeetingSituationMapper.selectById(payMailBillProject.getProjectId());
amountReceivable = meeting.getAmountReceivable();//应收
needInvoice = meeting.getNeedInvoice();//是否需要发票
oldInvoiceAmount = meeting.getInvoiceAmount();
if(oldInvoiceAmount==null){
oldInvoiceAmount= new BigDecimal("0");
}
//之前开票总额+本次开票金额
invoiceAmount = oldInvoiceAmount.subtract(invoiceAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
//税额
noTaxAmount = payPaymentRecordService.subtractPaidAmount(noTaxAmount,meeting.getInvoiceNoTaxAmount());
tax = payPaymentRecordService.subtractPaidAmount(tax,meeting.getInvoiceTax());
break;
//会员项目
case PayIncomeContractCommon.PROJECT_TYPE4:
PayMemberProjectSubitem memberProject = payMemberProjectSubitemMapper.selectById(payMailBillProject.getProjectId());
amountReceivable = memberProject.getAmountReceivable();//应收
needInvoice = memberProject.getNeedInvoice();//是否需要发票
oldInvoiceAmount = memberProject.getInvoiceAmount();
if(oldInvoiceAmount==null){
oldInvoiceAmount= new BigDecimal("0");
}
//之前开票总额+本次开票金额
invoiceAmount = oldInvoiceAmount.subtract(invoiceAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
//税额
noTaxAmount = payPaymentRecordService.subtractPaidAmount(noTaxAmount,memberProject.getInvoiceNoTaxAmount());
tax = payPaymentRecordService.subtractPaidAmount(tax,memberProject.getInvoiceTax());
break;
default:
break;
}
if(amountReceivable==null){
amountReceivable =new BigDecimal("0");
}
BigDecimal zero =new BigDecimal("0");
//应收=0 || 不需要开票
if(amountReceivable.compareTo(zero)==0 || needInvoice.equals(0)){
makeInvoice= 3;
}
//应收>开票总额 && 开票总额!=0
if(amountReceivable.compareTo(invoiceAmount) == 1 && !(invoiceAmount.compareTo(zero) == 0)){
makeInvoice= 2;
}
//开票总额>=应收
if(invoiceAmount.compareTo(amountReceivable) > -1){
makeInvoice= 1;
}
//开票总额为0
if(invoiceAmount.compareTo(zero)==0){
makeInvoice= 0;
}
//更新项目表开票状态
switch (payMailBillProject.getProjectType().toString()) {
// 普通项目
case PayIncomeContractCommon.PROJECT_TYPE1:
PayCommonProject newCommon = new PayCommonProject();
newCommon.setId(payMailBillProject.getProjectId());
newCommon.setMakeInvoice(makeInvoice);
newCommon.setInvoiceAmount(invoiceAmount);
newCommon.setInvoiceNoTaxAmount(noTaxAmount);
newCommon.setInvoiceTax(tax);
payCommonProjectMapper.updateById(newCommon);
break;
// 工作组项目
case PayIncomeContractCommon.PROJECT_TYPE2:
PayWorkingGroupSubItem newWorkingGroup = new PayWorkingGroupSubItem();
newWorkingGroup.setId(payMailBillProject.getProjectId());
newWorkingGroup.setMakeInvoice(makeInvoice);
newWorkingGroup.setInvoiceAmount(invoiceAmount);
newWorkingGroup.setInvoiceNoTaxAmount(noTaxAmount);
newWorkingGroup.setInvoiceTax(tax);
payWorkingGroupSubItemMapper.updateById(newWorkingGroup);
break;
//会议项目
case PayIncomeContractCommon.PROJECT_TYPE3:
PayMeetingSituation newMeeting = new PayMeetingSituation();
newMeeting.setId(payMailBillProject.getProjectId());
newMeeting.setMakeInvoice(makeInvoice);
newMeeting.setInvoiceAmount(invoiceAmount);
newMeeting.setInvoiceNoTaxAmount(noTaxAmount);
newMeeting.setInvoiceTax(tax);
payMeetingSituationMapper.updateById(newMeeting);
break;
//会员项目
case PayIncomeContractCommon.PROJECT_TYPE4:
PayMemberProjectSubitem newMemberProject = new PayMemberProjectSubitem();
newMemberProject.setId(payMailBillProject.getProjectId());
newMemberProject.setMakeInvoice(makeInvoice);
newMemberProject.setInvoiceAmount(invoiceAmount);
newMemberProject.setInvoiceNoTaxAmount(noTaxAmount);
newMemberProject.setInvoiceTax(tax);
payMemberProjectSubitemMapper.updateById(newMemberProject);
break;
default:
break;
}
}
@@ -34,4 +34,6 @@ public interface PayMeetingSituationMapper extends BaseMapper<PayMeetingSituatio
IPage<MeetingPackStatistics> getMeetingPackStatistics(Page<PayMeetingSituation> page,@Param(Constants.WRAPPER) QueryWrapper<PayMeetingSituation> query);
List<MeetingPackStatistics> getMeetingPackStatistics(@Param(Constants.WRAPPER) QueryWrapper<PayMeetingSituation> query);
MeetingPackStatistics getMeetingPackStatisticsCount(@Param(Constants.WRAPPER) QueryWrapper<PayMeetingSituation> query);
}
@@ -186,4 +186,13 @@
left join pay_confirm_payment_record p3 on p3.project_id = p1.id
${ew.customSqlSegment}
</select>
<select id="getMeetingPackStatisticsCount" resultType="com.jero.statistics.entity.MeetingPackStatistics">
select sum(amount_receivable ) AS allMoney,sum(confirm_amount ) AS confirm_amount, sum(invoice_amount ) AS billMoney,sum(paid_amount ) AS comeAllMoney from
(
select p1.amount_receivable, p1.confirm_amount, p1.invoice_amount, p1.paid_amount from pay_meeting_situation p1
left join pay_meeting p2 on p1.meeting_id = p2.id
left join pay_confirm_payment_record p3 on p3.project_id = p1.id
${ew.customSqlSegment}
) a
</select>
</mapper>
@@ -345,6 +345,7 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
//处理校验参会人信息
payMeetingSituation.setAmountReceivable(new BigDecimal("0"));
PayMeetingSituation payMeetingSituation1 = getPayMeetingSituation(payMeetingSituation);
payMeetingSituation1.setEstimatedArrivalDate(payMeeting.getStartTime());
saveMeetingSituation(payMeetingSituation1);
//处理打包
//handlePack(payMeetingSituation1);
@@ -1945,8 +1946,7 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
Integer pageSize) {
QueryWrapper<PayMeetingSituation> query = getPayMeetingSituationQueryWrapper(metingPackStatisticsSearch);
Page<PayMeetingSituation> page = new Page<>(pageNo, pageSize);
query.select("p1.id,p1.meeting_id,p1.company_name,p1.company_contact_name,p1.amount_receivable as allMoney,p1.confirm_amount,\n" +
" p1.invoice_amount as billMoney,p1.paid_amount as comeAllMoney,p2.meeting_name,p2.meeting_type,DATE_FORMAT(p3.payment_date,'%Y') as payment_year");
addOrder(metingPackStatisticsSearch, query);
// 查看分页数据
IPage<MeetingPackStatistics> pageList = payMeetingSituationMapper.getMeetingPackStatistics(page,query);
List<MeetingPackStatistics> list = pageList.getRecords();
@@ -1960,16 +1960,12 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
// 查看汇总价格
QueryWrapper<PayMeetingSituation> querySum = getPayMeetingSituationQueryWrapper(metingPackStatisticsSearch);
querySum.select("case when sum( p1.amount_receivable ) is null then 0 else sum( p1.amount_receivable ) end AS allMoney,\n" +
"\tcase when sum( p1.confirm_amount ) is null then 0 else sum( p1.confirm_amount ) end AS confirm_amount,\n" +
"\tcase when sum( p1.invoice_amount ) is null then 0 else sum( p1.invoice_amount ) end AS billMoney,\n" +
"\tcase when sum( p1.paid_amount ) is null then 0 else sum( p1.paid_amount ) end AS comeAllMoney ");
List<MeetingPackStatistics> sumList = payMeetingSituationMapper.getMeetingPackStatistics(querySum);
MeetingPackStatistics count = payMeetingSituationMapper.getMeetingPackStatisticsCount(querySum);
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("sumOfMoney", (CollectionUtils.isEmpty(sumList) || StringUtils.isBlank(sumList.get(0).getAllMoney())) ? 0 : sumList.get(0).getAllMoney());
hashMap.put("sumOfReallyMoney", (CollectionUtils.isEmpty(sumList) || StringUtils.isBlank(sumList.get(0).getComeAllMoney())) ? 0 : sumList.get(0).getComeAllMoney());
hashMap.put("sumOfBillMoney", (CollectionUtils.isEmpty(sumList) || StringUtils.isBlank(sumList.get(0).getBillMoney())) ? 0 : sumList.get(0).getBillMoney());
hashMap.put("sumOfConfirmAmount", (CollectionUtils.isEmpty(sumList) || StringUtils.isBlank(sumList.get(0).getConfirmAmount())) ? 0 : sumList.get(0).getConfirmAmount());
hashMap.put("sumOfMoney", (Objects.isNull(count) || StringUtils.isBlank(count.getAllMoney())) ? 0 : count.getAllMoney());
hashMap.put("sumOfReallyMoney", (Objects.isNull(count) || StringUtils.isBlank(count.getComeAllMoney())) ? 0 : count.getComeAllMoney());
hashMap.put("sumOfBillMoney", (Objects.isNull(count) || StringUtils.isBlank(count.getBillMoney())) ? 0 : count.getBillMoney());
hashMap.put("sumOfConfirmAmount", (Objects.isNull(count) || StringUtils.isBlank(count.getConfirmAmount())) ? 0 : count.getConfirmAmount());
hashMap.put("pageList", pageList);
return hashMap;
}
@@ -1977,8 +1973,7 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
@Override
public ModelAndView excelMeetingPackStatistics(MeetingPackStatisticsSearch metingPackStatisticsSearch) {
QueryWrapper<PayMeetingSituation> query = getPayMeetingSituationQueryWrapper(metingPackStatisticsSearch);
query.select("p1.id,p1.meeting_id,p1.company_name,p1.company_contact_name,p1.amount_receivable as allMoney,p1.confirm_amount,\n" +
"p1.invoice_amount as billMoney,p1.paid_amount as comeAllMoney,p2.meeting_name,p2.meeting_type,DATE_FORMAT(p3.payment_date,'%Y') as payment_year");
addOrder(metingPackStatisticsSearch, query);
List<MeetingPackStatistics> list = payMeetingSituationMapper.getMeetingPackStatistics(query);
// Step.3 AutoPoi 导出Excel
@@ -2006,6 +2001,31 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
if (!StringUtils.isBlank(metingPackStatisticsSearch.getPaymentYear())) {
query.eq("DATE_FORMAT(p3.payment_date,'%Y')", metingPackStatisticsSearch.getPaymentYear());
}
query.groupBy("p3.project_id");
return query;
}
@NotNull
private void addOrder(MeetingPackStatisticsSearch metingPackStatisticsSearch,QueryWrapper<PayMeetingSituation> query) {
query.select("p1.id,p1.meeting_id,p1.company_name,p1.company_contact_name,p1.amount_receivable as allMoney,p1.confirm_amount,\n" +
" p1.invoice_amount as billMoney,p1.paid_amount as comeAllMoney,p2.meeting_name,p2.meeting_type,DATE_FORMAT(p3.payment_date,'%Y') as payment_year");
// 排序
if(!StringUtils.isBlank(metingPackStatisticsSearch.getColumn()) && !StringUtils.isBlank(metingPackStatisticsSearch.getOrder())){
String column = "";
switch (metingPackStatisticsSearch.getColumn()){
case "allMoney": column = "p1.amount_receivable";break;
case "confirmAmount": column = "p1.confirm_amount";break;
case "billMoney": column = "p1.invoice_amount";break;
case "comeAllMoney": column = "p1.paid_amount";break;
default:break;
}
if(!StringUtils.isBlank(column)){
if(Objects.equals(metingPackStatisticsSearch.getOrder(),"asc")){
query.orderByAsc(column);
}else{
query.orderByDesc(column);
}
}
}
}
}
@@ -85,7 +85,8 @@ public class PayMemberProjectSubitemController extends JeroController<PayMemberP
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<PayMemberProjectSubitem> queryWrapper = QueryGenerator.initQueryWrapper(payMemberProjectSubitem, req.getParameterMap());
Map<String, String[]> parameterMap = req.getParameterMap();
QueryWrapper<PayMemberProjectSubitem> queryWrapper = QueryGenerator.initQueryWrapper(payMemberProjectSubitem, parameterMap);
// 预计到账开始日期
String estimatedArrivalStartDate = payMemberProjectSubitem.getEstimatedArrivalStartDate();
// 预计到账结束日期
@@ -105,6 +106,10 @@ public class PayMemberProjectSubitemController extends JeroController<PayMemberP
if (!rolePermissionService.getRolePermission("safeguardMember:search")) {
queryWrapper.eq("pmp.director_id",sysUser.getId());
}
if (parameterMap.containsKey("pmps.companyName")){
String[] strings = parameterMap.get("pmps.companyName");
queryWrapper.like("pmps.company_name", strings[0]);
}
Page<PayMemberProjectSubitem> page = new Page<>(pageNo, pageSize);
IPage<PayMemberProjectSubitem> pageList = memberProjectSubitemService.getPage(page, queryWrapper);
return Result.OK(pageList);
@@ -385,11 +385,11 @@ public class PayMemberProjectSubitem implements Serializable {
//@TableField(exist = false)
//private String postContactName;
/**预到账日期*/
/**预到账日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "到账日期")
@Excel(name = "到账日期", width = 15,orderNum = "9")
@ApiModelProperty(value = "到账日期")
@Excel(name = "到账日期", width = 15,orderNum = "9")
private String estimatedArrivalDate;
/**预计到账开始日期*/
@@ -114,11 +114,11 @@ public class PayMemberProjectSubitemExcel {
@NotBlank(message = "需要发票不能为空")
private String needInvoice;
/**预到账日期*/
/**预到账日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "到账日期")
@Excel(name = "到账日期", width = 15,orderNum = "5")
@ApiModelProperty(value = "到账日期")
@Excel(name = "到账日期", width = 15,orderNum = "5")
private String estimatedArrivalDate;
@Excel(name = "邮寄联系人手机号", width = 17, orderNum = "4")
@@ -153,7 +153,7 @@ public class PayConfirmPaymentRecordController extends JeroController<PayConfir
/**
* 确认收入-撤销
*/
// @RequiresPermissions({"incomePaymentAndInvoiving:confirmPayment","packProject:confirmPayment"})
@RequiresPermissions({"incomePaymentAndInvoicing:revokeConfirm"})
@AutoLog(value = "确认来款-撤销")
@ApiOperation(value="确认来款-撤销", notes="确认来款-撤销")
@PostMapping(value = "/backIncoming")
@@ -273,6 +273,7 @@ public class PayPaymentRecordController extends JeroController<PayPaymentRecord,
@AutoLog(value = "开票-撤销")
@ApiOperation(value = "开票-撤销", notes = "开票-撤销")
@PostMapping(value = "/backInvoice")
@RequiresPermissions("incomePaymentAndInvoicing:revokeInvoice")
public Result<?> backInvoice(@RequestParam String id) {
payMailBillService.backInvoice(id);
return Result.OK();
@@ -81,6 +81,14 @@ public interface IPayPaymentRecordService extends IService<PayPaymentRecord> {
* @return
*/
BigDecimal addPaidAmount(BigDecimal paidAmount,BigDecimal amountReceived);
/**
* 减去实收并四舍五入
* @param paidAmount 实收
* @param amountReceived 到账
* @return
*/
BigDecimal subtractPaidAmount(BigDecimal paidAmount,BigDecimal amountReceived);
/**
* 得到到账状态
* @param receivableAmount 应收
@@ -1,7 +1,6 @@
package com.jero.payment.service.impl;
import cn.hutool.core.collection.CollStreamUtil;
import com.alibaba.druid.sql.visitor.functions.If;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -78,7 +77,6 @@ import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.validation.constraints.DecimalMax;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
@@ -881,6 +879,24 @@ public class PayPaymentRecordServiceImpl extends ServiceImpl<PayPaymentRecordMap
return paidAmount.add(amountReceived).setScale(2, RoundingMode.HALF_UP);
}
/**
* 减去实收并四舍五入
* @param paidAmount 实收
* @param amountReceived 到账
* @return
*/
@Override
public BigDecimal subtractPaidAmount(BigDecimal paidAmount,BigDecimal amountReceived){
if(paidAmount == null){
paidAmount = new BigDecimal("0");
}
if (amountReceived == null){
amountReceived = BigDecimal.ZERO;
}
return paidAmount.subtract(amountReceived).setScale(2, RoundingMode.HALF_UP);
}
/**
* 相减
* @param paidAmount 实收
@@ -126,11 +126,11 @@ public class PayWorkingGroupSubItem implements Serializable {
@JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal receivableAmount;
/**预到账日期*/
/**预到账日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "到账日期")
@Excel(name = "到账日期",width = 15,format = "yyyy-MM-dd")
@ApiModelProperty(value = "到账日期")
@Excel(name = "到账日期",width = 15,format = "yyyy-MM-dd")
private String estimatedArrivalDate;
/**实收金额(元)*/
@@ -1141,7 +1141,7 @@
principalNameId = #{principalPeopleDetailSearch.principalNameId}
<if test="principalPeopleDetailSearch.projectName != null and principalPeopleDetailSearch.projectName != ''">
AND projectName LIKE
concat('%'#{principalPeopleDetailSearch.projectName}, '%')
concat('%',#{principalPeopleDetailSearch.projectName}, '%')
</if>
<if test="principalPeopleDetailSearch.chargeUse != null and principalPeopleDetailSearch.chargeUse != ''">
AND chargeUse = #{principalPeopleDetailSearch.chargeUse}
@@ -1241,7 +1241,7 @@
principalNameId = #{principalPeopleDetailSearch.principalNameId}
<if test="principalPeopleDetailSearch.projectName != null and principalPeopleDetailSearch.projectName != ''">
AND projectName LIKE
concat('%'#{principalPeopleDetailSearch.projectName}, '%')
concat('%',#{principalPeopleDetailSearch.projectName}, '%')
</if>
<if test="principalPeopleDetailSearch.chargeUse != null and principalPeopleDetailSearch.chargeUse != ''">
AND chargeUse = #{principalPeopleDetailSearch.chargeUse}
@@ -1624,7 +1624,7 @@
</if>
<if test="CompanyComeMoneyDetailSearch.projectName != null and CompanyComeMoneyDetailSearch.projectName != ''">
AND projectName LIKE
concat('%'#{CompanyComeMoneyDetailSearch.projectName},'%')
concat('%',#{CompanyComeMoneyDetailSearch.projectName},'%')
</if>
<if test="CompanyComeMoneyDetailSearch.inAccountStatue != null and CompanyComeMoneyDetailSearch.inAccountStatue != ''">
@@ -1737,7 +1737,7 @@
</if>
<if test="CompanyComeMoneyDetailSearch.projectName != null and CompanyComeMoneyDetailSearch.projectName != ''">
AND projectName LIKE
concat('%'#{CompanyComeMoneyDetailSearch.projectName}, '%')
concat('%',#{CompanyComeMoneyDetailSearch.projectName}, '%')
</if>
<if test="CompanyComeMoneyDetailSearch.inAccountStatue != null and CompanyComeMoneyDetailSearch.inAccountStatue != ''">
@@ -272,7 +272,7 @@ public class PayWorkingGroupServiceImpl extends ServiceImpl<PayWorkingGroupMappe
if(Objects.isNull(payCompanyManagementTemporary)){
payCompanyManagementTemporary = payCompanyManagementTemporaryService.insertCompanyManagementTemporary(p.getChargeCompanyId());
}else{
payCompanyManagementTemporary.setCompanyId(payCompanyManagementTemporary.getId());
payCompanyManagementTemporary.setCompanyId(payCompanyManagementTemporary.getCompanyId());
payCompanyManagementTemporary.setId(null);
payCompanyManagementTemporaryService.save(payCompanyManagementTemporary);
}
@@ -54,11 +54,11 @@ public class PayWorkingGroupSubItemExcel implements Serializable {
@JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal paidAmount;
/**预到账日期*/
/**预到账日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "到账日期")
@Excel(name = "到账日期",width = 15)
@ApiModelProperty(value = "到账日期")
@Excel(name = "到账日期",width = 15)
private String estimatedArrivalDate;
/**
@@ -19,4 +19,10 @@ public class MeetingPackStatisticsSearch implements Serializable {
private String paymentYear;
@ApiModelProperty(value = "来款方式(默认打包)")
private String payMode;
@ApiModelProperty(value = "字段")
private String column;
@ApiModelProperty(value = "排序规则")
private String order;
}