diff --git a/db/24年1月5日上线变更.sql b/db/24年1月5日上线变更.sql index d124c85c..99b2a76a 100644 --- a/db/24年1月5日上线变更.sql +++ b/db/24年1月5日上线变更.sql @@ -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); + diff --git a/db/统计视图.sql b/db/统计视图.sql index fb2fa311..4c0dcd3b 100644 --- a/db/统计视图.sql +++ b/db/统计视图.sql @@ -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; \ No newline at end of file +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; \ No newline at end of file diff --git a/db/统计视图(新).sql b/db/统计视图(新).sql new file mode 100644 index 00000000..7733a1b6 --- /dev/null +++ b/db/统计视图(新).sql @@ -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; \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/mail/service/impl/PayMailBillServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/mail/service/impl/PayMailBillServiceImpl.java index e7dc3035..fe4c186c 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/mail/service/impl/PayMailBillServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/mail/service/impl/PayMailBillServiceImpl.java @@ -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 queryPayMailBillProject = new LambdaQueryWrapper<>(); - queryPayMailBillProject.eq(PayMailBillProject::getBillId,id); - List list1 = payMailBillProjectService.list(queryPayMailBillProject); - for(PayMailBillProject one:list1) { - if (ObjectUtils.isNotEmpty(one)) { - LambdaQueryWrapper queryPayMailBillProjectTwo = new LambdaQueryWrapper<>(); - queryPayMailBillProjectTwo.eq(PayMailBillProject::getProjectId, one.getProjectId()); - List 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 list = listPayMailBillProject.stream().map(PayMailBillProject::getBillId).collect(Collectors.toList()); - LambdaQueryWrapper queryPayMailBill = new LambdaQueryWrapper<>(); - queryPayMailBill.in(PayMailBill::getId, list); - queryPayMailBill.eq(PayMailBill::getPostStatus, ProjectCommon.POST_STATUS1); - List 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 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 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; } } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/mapper/PayMeetingSituationMapper.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/mapper/PayMeetingSituationMapper.java index 0550cb4f..3bcb7b90 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/mapper/PayMeetingSituationMapper.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/mapper/PayMeetingSituationMapper.java @@ -34,4 +34,6 @@ public interface PayMeetingSituationMapper extends BaseMapper getMeetingPackStatistics(Page page,@Param(Constants.WRAPPER) QueryWrapper query); List getMeetingPackStatistics(@Param(Constants.WRAPPER) QueryWrapper query); + + MeetingPackStatistics getMeetingPackStatisticsCount(@Param(Constants.WRAPPER) QueryWrapper query); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/mapper/xml/PayMeetingSituationMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/mapper/xml/PayMeetingSituationMapper.xml index 588f71bf..6df0d6aa 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/mapper/xml/PayMeetingSituationMapper.xml +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/mapper/xml/PayMeetingSituationMapper.xml @@ -186,4 +186,13 @@ left join pay_confirm_payment_record p3 on p3.project_id = p1.id ${ew.customSqlSegment} + diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingSituationServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingSituationServiceImpl.java index 24522b0f..14a22722 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingSituationServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingSituationServiceImpl.java @@ -345,6 +345,7 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl query = getPayMeetingSituationQueryWrapper(metingPackStatisticsSearch); Page 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 pageList = payMeetingSituationMapper.getMeetingPackStatistics(page,query); List list = pageList.getRecords(); @@ -1960,16 +1960,12 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl 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 sumList = payMeetingSituationMapper.getMeetingPackStatistics(querySum); + MeetingPackStatistics count = payMeetingSituationMapper.getMeetingPackStatisticsCount(querySum); HashMap 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 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 list = payMeetingSituationMapper.getMeetingPackStatistics(query); // Step.3 AutoPoi 导出Excel @@ -2006,6 +2001,31 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl 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); + } + } + } + } } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/member/controller/PayMemberProjectSubitemController.java b/jero-boot-incoming-payment/src/main/java/com/jero/member/controller/PayMemberProjectSubitemController.java index 2d67af26..62188e81 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/member/controller/PayMemberProjectSubitemController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/member/controller/PayMemberProjectSubitemController.java @@ -85,7 +85,8 @@ public class PayMemberProjectSubitemController extends JeroController queryWrapper = QueryGenerator.initQueryWrapper(payMemberProjectSubitem, req.getParameterMap()); + Map parameterMap = req.getParameterMap(); + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payMemberProjectSubitem, parameterMap); // 预计到账开始日期 String estimatedArrivalStartDate = payMemberProjectSubitem.getEstimatedArrivalStartDate(); // 预计到账结束日期 @@ -105,6 +106,10 @@ public class PayMemberProjectSubitemController extends JeroController page = new Page<>(pageNo, pageSize); IPage pageList = memberProjectSubitemService.getPage(page, queryWrapper); return Result.OK(pageList); diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/member/entity/PayMemberProjectSubitem.java b/jero-boot-incoming-payment/src/main/java/com/jero/member/entity/PayMemberProjectSubitem.java index c8b254dd..6846005f 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/member/entity/PayMemberProjectSubitem.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/member/entity/PayMemberProjectSubitem.java @@ -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; /**预计到账开始日期*/ diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/member/vo/PayMemberProjectSubitemExcel.java b/jero-boot-incoming-payment/src/main/java/com/jero/member/vo/PayMemberProjectSubitemExcel.java index 83a9b4a0..ce8f2819 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/member/vo/PayMemberProjectSubitemExcel.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/member/vo/PayMemberProjectSubitemExcel.java @@ -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") diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/payment/controller/PayConfirmPaymentRecordController.java b/jero-boot-incoming-payment/src/main/java/com/jero/payment/controller/PayConfirmPaymentRecordController.java index 258959a9..c0f600c8 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/payment/controller/PayConfirmPaymentRecordController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/payment/controller/PayConfirmPaymentRecordController.java @@ -153,7 +153,7 @@ public class PayConfirmPaymentRecordController extends JeroController backInvoice(@RequestParam String id) { payMailBillService.backInvoice(id); return Result.OK(); diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/payment/service/IPayPaymentRecordService.java b/jero-boot-incoming-payment/src/main/java/com/jero/payment/service/IPayPaymentRecordService.java index 80d6a54f..49c3a59a 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/payment/service/IPayPaymentRecordService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/payment/service/IPayPaymentRecordService.java @@ -81,6 +81,14 @@ public interface IPayPaymentRecordService extends IService { * @return */ BigDecimal addPaidAmount(BigDecimal paidAmount,BigDecimal amountReceived); + + /** + * 减去实收并四舍五入 + * @param paidAmount 实收 + * @param amountReceived 到账 + * @return + */ + BigDecimal subtractPaidAmount(BigDecimal paidAmount,BigDecimal amountReceived); /** * 得到到账状态 * @param receivableAmount 应收 diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/payment/service/impl/PayPaymentRecordServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/payment/service/impl/PayPaymentRecordServiceImpl.java index ecd866dd..ff91cac4 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/payment/service/impl/PayPaymentRecordServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/payment/service/impl/PayPaymentRecordServiceImpl.java @@ -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 AND projectName LIKE - concat('%'#{principalPeopleDetailSearch.projectName}, '%') + concat('%',#{principalPeopleDetailSearch.projectName}, '%') AND chargeUse = #{principalPeopleDetailSearch.chargeUse} @@ -1241,7 +1241,7 @@ principalNameId = #{principalPeopleDetailSearch.principalNameId} AND projectName LIKE - concat('%'#{principalPeopleDetailSearch.projectName}, '%') + concat('%',#{principalPeopleDetailSearch.projectName}, '%') AND chargeUse = #{principalPeopleDetailSearch.chargeUse} @@ -1624,7 +1624,7 @@ AND projectName LIKE - concat('%'#{CompanyComeMoneyDetailSearch.projectName},'%') + concat('%',#{CompanyComeMoneyDetailSearch.projectName},'%') @@ -1737,7 +1737,7 @@ AND projectName LIKE - concat('%'#{CompanyComeMoneyDetailSearch.projectName}, '%') + concat('%',#{CompanyComeMoneyDetailSearch.projectName}, '%') diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayWorkingGroupServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayWorkingGroupServiceImpl.java index 046472ea..61a5c7ac 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayWorkingGroupServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayWorkingGroupServiceImpl.java @@ -272,7 +272,7 @@ public class PayWorkingGroupServiceImpl extends ServiceImpl