diff --git a/db/统计视图(新).sql b/db/统计视图(新).sql index dd6a619e..3a6bbf31 100644 --- a/db/统计视图(新).sql +++ b/db/统计视图(新).sql @@ -1466,8 +1466,8 @@ where pp.allMoney is not null order by pp.createTime; -drop view if exists v_revenue_analysis; -create view v_revenue_analysis as +drop view if exists v_revenue_analysis_pack; +create view v_revenue_analysis_pack as select pp.id as projectId, pp.superId, pp.projectName, @@ -1806,4 +1806,307 @@ from ( ) pp where pp.allMoney is not null and pp.allMoney != 0 +order by pp.createTime; + + +drop view if exists v_revenue_analysis; +create view v_revenue_analysis as +select pp.id as projectId, + pp.superId, + pp.projectName, + principalName, + chargeCompanyId, + chargeCompanyTemporaryId, + chargeCompanyTemporaryName, + allMoney, + comeAllMoney, + chargeUse, + depart, + createTime, + if(pp.pack = 0, '否', '是') as packText, + year, + payStatue, + departId, + departCode, + principalNameId, + type, + 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.no_tax_amount as allMoney, + pwgs.paid_amount as comeAllMoney, + 16 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.invoice_amount AS billMoney, + confirm_amount as confirmAmount, + invoice_no_tax_amount as invoiceNoTaxAmount, + paid_no_tax_amount as paidNoTaxAmount, + confirm_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(pcpr.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 pay_confirm_payment_record pcpr on pwgs.id = pcpr.project_id + where pwgs.charge_way = 2 + group by pwgs.id + union all + 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.no_tax_amount as allMoney, + pwgs.paid_amount as comeAllMoney, + 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.invoice_amount AS billMoney, + confirm_amount as confirmAmount, + invoice_no_tax_amount as invoiceNoTaxAmount, + paid_no_tax_amount as paidNoTaxAmount, + confirm_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(pcpr.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 pay_confirm_payment_record pcpr on pwgs.id = pcpr.project_id + where pwgs.charge_way != 2 + 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.no_tax_amount as allMoney, + pcp.paid_amount as comeAllMoney, + 16 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.invoice_amount AS billMoney, + confirm_amount as confirmAmount, + invoice_no_tax_amount as invoiceNoTaxAmount, + paid_no_tax_amount as paidNoTaxAmount, + confirm_no_tax_amount as confirmNoTaxAmount, + contacts_temporary_name as contactsName, + GROUP_CONCAT(DATE_FORMAT(pcpr.payment_date,'%Y-%m')) 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 pay_confirm_payment_record pcpr on pcp.id = pcpr.project_id + where charge_way = 2 + group by pcp.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.no_tax_amount as allMoney, + pcp.paid_amount as comeAllMoney, + 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.invoice_amount AS billMoney, + confirm_amount as confirmAmount, + invoice_no_tax_amount as invoiceNoTaxAmount, + paid_no_tax_amount as paidNoTaxAmount, + confirm_no_tax_amount as confirmNoTaxAmount, + contacts_temporary_name as contactsName, + GROUP_CONCAT(DATE_FORMAT(pcpr.payment_date,'%Y-%m')) 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 pay_confirm_payment_record pcpr on pcp.id = pcpr.project_id + where charge_way != 2 + 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.no_tax_amount as allMoney, + pmps.paid_amount as comeAllMoney, + 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.invoice_amount AS billMoney, + confirm_amount as confirmAmount, + invoice_no_tax_amount as invoiceNoTaxAmount, + paid_no_tax_amount as paidNoTaxAmount, + confirm_no_tax_amount as confirmNoTaxAmount, + company_contact_name as contactsName, + GROUP_CONCAT(DATE_FORMAT(pcpr.payment_date,'%Y-%m')) 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 pay_confirm_payment_record pcpr on pmps.id = pcpr.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.no_tax_amount as allMoney, + pms.paid_amount as comeAllMoney, + 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.invoice_amount AS billMoney, + confirm_amount as confirmAmount, + invoice_no_tax_amount as invoiceNoTaxAmount, + paid_no_tax_amount as paidNoTaxAmount, + confirm_no_tax_amount as confirmNoTaxAmount, + company_contact_name as contactsName, + GROUP_CONCAT(DATE_FORMAT(pcpr.payment_date,'%Y-%m')) 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 pay_confirm_payment_record pcpr on pms.id = pcpr.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.no_tax_amount as allMoney, + tmps.paid_amount as comeAllMoney, + 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.invoice_amount AS billMoney, + confirm_amount as confirmAmount, + invoice_no_tax_amount as invoiceNoTaxAmount, + paid_no_tax_amount as paidNoTaxAmount, + confirm_no_tax_amount as confirmNoTaxAmount, + liaison_man as contactsName, + GROUP_CONCAT(DATE_FORMAT(pcpr.payment_date,'%Y-%m')) 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 pay_confirm_payment_record pcpr on tmps.id = pcpr.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.no_tax_amount as allMoney, + tcp.paid_amount as comeAllMoney, + 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.invoice_amount AS billMoney, + confirm_amount as confirmAmount, + invoice_no_tax_amount as invoiceNoTaxAmount, + paid_no_tax_amount as paidNoTaxAmount, + confirm_no_tax_amount as confirmNoTaxAmount, + liaison_man as contactsName, + GROUP_CONCAT(DATE_FORMAT(pcpr.payment_date,'%Y-%m')) 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 pay_confirm_payment_record pcpr on tcp.id = pcpr.project_id + group by tcp.id + ) pp +where pp.allMoney is not null + and pp.allMoney != 0 order by pp.createTime; \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/index/contoller/IndexController.java b/jero-boot-incoming-payment/src/main/java/com/jero/index/contoller/IndexController.java index 7d9b64d2..fefcfbf7 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/index/contoller/IndexController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/index/contoller/IndexController.java @@ -78,20 +78,22 @@ public class IndexController { @ApiOperation(value = "收入分类统计") @GetMapping(value = "/incomeClassificationStatistics") public Result> incomeClassificationStatistics(@RequestParam(name="type", defaultValue = "1")Integer type, + @RequestParam(name="projectType", defaultValue = "2")Integer projectType, @RequestParam(name="departCode",required = false)String departCode, @RequestParam(name="year",required = false)String year) { - if (Objects.equals(type,1)){ - List pieChartVOS = indexService.totalAmountClassificationStatistics("allMoney", type,departCode,year); - return Result.OK(pieChartVOS); - }else if (Objects.equals(type,2)){ - List pieChartVOS = indexService.totalAmountClassificationStatistics("no_tax_amount", type, departCode, year); - return Result.OK(pieChartVOS); - }else if (Objects.equals(type,3)){ - List pieChartVOS = indexService.totalAmountClassificationStatistics("allMoney", type, departCode, year); - return Result.OK(pieChartVOS); + String column; + //应收,收入分析 + if (Objects.equals(type,1)||Objects.equals(type,3)){ + column = "allMoney"; + }else + //确收 + if (Objects.equals(type,2)){ + column = "no_tax_amount"; }else { return Result.OK(); } + List pieChartVOS = indexService.totalAmountClassificationStatistics(column, type,departCode,year,projectType); + return Result.OK(pieChartVOS); } @ApiOperation(value = "企业客户统计(年度待确收金额前二十)") diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/index/service/IndexService.java b/jero-boot-incoming-payment/src/main/java/com/jero/index/service/IndexService.java index 16b85510..37c9ce0d 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/index/service/IndexService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/index/service/IndexService.java @@ -268,17 +268,29 @@ public class IndexService { } - public List totalAmountClassificationStatistics(String column, Integer type, String departCode, String year) { + public List totalAmountClassificationStatistics(String column, Integer type, String departCode, String year, Integer projectType) { if (StringUtils.isBlank(year)){ year = String.valueOf(DateUtil.year(new DateTime())); } List amountClassDTOS; + //收入分析 if (Objects.equals(type,3)){ - amountClassDTOS = payWorkingGroupMapper.amountClass1(year,column,departCode); - }else if (Objects.equals(type,2)){ + if (Objects.equals(projectType,1)){ + amountClassDTOS = payWorkingGroupMapper.amountClassPack1(year,column,departCode); + }else { + amountClassDTOS = payWorkingGroupMapper.amountClass1(year,column,departCode); + } + }else + //确收 + if (Objects.equals(type,2)){ amountClassDTOS = payWorkingGroupMapper.amountClass(year,column,departCode,type); }else { - amountClassDTOS = payWorkingGroupMapper.amountClass2(year,column,departCode,type); + //应收 + if (Objects.equals(projectType,1)){ + amountClassDTOS = payWorkingGroupMapper.amountClassPack2(year,column,departCode,type); + }else { + amountClassDTOS = payWorkingGroupMapper.amountClass2(year,column,departCode,type); + } } Map decimalMap = amountClassDTOS.stream().collect(Collectors.toMap(AmountClassDTO::getChargeUse, AmountClassDTO::getMoney)); //获取所有类型 diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/PayWorkingGroupMapper.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/PayWorkingGroupMapper.java index 80ec6de9..c6e918f7 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/PayWorkingGroupMapper.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/PayWorkingGroupMapper.java @@ -246,8 +246,12 @@ public interface PayWorkingGroupMapper extends BaseMapper { List amountClass(@Param("year") String year, @Param("column") String column, @Param("departCode") String departCode, @Param("type") Integer type); + List amountClassPack1(@Param("year") String year, @Param("column") String column, @Param("departCode") String departCode); + List amountClass1(@Param("year") String year, @Param("column") String column, @Param("departCode") String departCode); + List amountClassPack2(@Param("year") String year, @Param("column") String column, @Param("departCode") String departCode, @Param("type") Integer type); + List amountClass2(@Param("year") String year, @Param("column") String column, @Param("departCode") String departCode, @Param("type") Integer type); List getYearMoneyDTO(); diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/xml/PayWorkingGroupMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/xml/PayWorkingGroupMapper.xml index f67e622b..9b7dd551 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/xml/PayWorkingGroupMapper.xml +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/xml/PayWorkingGroupMapper.xml @@ -2444,7 +2444,7 @@ ORDER BY TMP1.paymentDate - SELECT chargeUse, ifnull(SUM(${column}),0) as money FROM v_statistical_pack v @@ -2457,6 +2457,19 @@ GROUP BY chargeUse + + + +