update 收入分类统计 增加打包项目和子项目区分
This commit is contained in:
+305
-2
@@ -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;
|
||||
+11
-9
@@ -78,20 +78,22 @@ public class IndexController {
|
||||
@ApiOperation(value = "收入分类统计")
|
||||
@GetMapping(value = "/incomeClassificationStatistics")
|
||||
public Result<List<PieChartVO>> 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<PieChartVO> pieChartVOS = indexService.totalAmountClassificationStatistics("allMoney", type,departCode,year);
|
||||
return Result.OK(pieChartVOS);
|
||||
}else if (Objects.equals(type,2)){
|
||||
List<PieChartVO> pieChartVOS = indexService.totalAmountClassificationStatistics("no_tax_amount", type, departCode, year);
|
||||
return Result.OK(pieChartVOS);
|
||||
}else if (Objects.equals(type,3)){
|
||||
List<PieChartVO> 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<PieChartVO> pieChartVOS = indexService.totalAmountClassificationStatistics(column, type,departCode,year,projectType);
|
||||
return Result.OK(pieChartVOS);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "企业客户统计(年度待确收金额前二十)")
|
||||
|
||||
@@ -268,17 +268,29 @@ public class IndexService {
|
||||
}
|
||||
|
||||
|
||||
public List<PieChartVO> totalAmountClassificationStatistics(String column, Integer type, String departCode, String year) {
|
||||
public List<PieChartVO> totalAmountClassificationStatistics(String column, Integer type, String departCode, String year, Integer projectType) {
|
||||
if (StringUtils.isBlank(year)){
|
||||
year = String.valueOf(DateUtil.year(new DateTime()));
|
||||
}
|
||||
List<AmountClassDTO> 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<String, BigDecimal> decimalMap = amountClassDTOS.stream().collect(Collectors.toMap(AmountClassDTO::getChargeUse, AmountClassDTO::getMoney));
|
||||
//获取所有类型
|
||||
|
||||
+4
@@ -246,8 +246,12 @@ public interface PayWorkingGroupMapper extends BaseMapper<PayWorkingGroup> {
|
||||
|
||||
List<AmountClassDTO> amountClass(@Param("year") String year, @Param("column") String column, @Param("departCode") String departCode, @Param("type") Integer type);
|
||||
|
||||
List<AmountClassDTO> amountClassPack1(@Param("year") String year, @Param("column") String column, @Param("departCode") String departCode);
|
||||
|
||||
List<AmountClassDTO> amountClass1(@Param("year") String year, @Param("column") String column, @Param("departCode") String departCode);
|
||||
|
||||
List<AmountClassDTO> amountClassPack2(@Param("year") String year, @Param("column") String column, @Param("departCode") String departCode, @Param("type") Integer type);
|
||||
|
||||
List<AmountClassDTO> amountClass2(@Param("year") String year, @Param("column") String column, @Param("departCode") String departCode, @Param("type") Integer type);
|
||||
|
||||
List<YearMoneyDTO> getYearMoneyDTO();
|
||||
|
||||
+27
-1
@@ -2444,7 +2444,7 @@
|
||||
ORDER BY TMP1.paymentDate
|
||||
</select>
|
||||
|
||||
<select id="amountClass2" resultType="com.jero.index.vo.AmountClassDTO">
|
||||
<select id="amountClassPack2" resultType="com.jero.index.vo.AmountClassDTO">
|
||||
SELECT chargeUse,
|
||||
ifnull(SUM(${column}),0) as money
|
||||
FROM v_statistical_pack v
|
||||
@@ -2457,6 +2457,19 @@
|
||||
GROUP BY chargeUse
|
||||
</select>
|
||||
|
||||
<select id="amountClass2" resultType="com.jero.index.vo.AmountClassDTO">
|
||||
SELECT chargeUse,
|
||||
ifnull(SUM(${column}),0) as money
|
||||
FROM v_statistical v
|
||||
<where>
|
||||
year like concat('%',#{year},'%')
|
||||
<if test="departCode != null and departCode != ''">
|
||||
and departCode = #{departCode}
|
||||
</if>
|
||||
</where>
|
||||
GROUP BY chargeUse
|
||||
</select>
|
||||
|
||||
<select id="amountClass" resultType="com.jero.index.vo.AmountClassDTO">
|
||||
SELECT chargeUse,
|
||||
ifnull(SUM(pcpr.${column}),0) as money
|
||||
@@ -2469,6 +2482,19 @@
|
||||
</where>
|
||||
GROUP BY chargeUse
|
||||
</select>
|
||||
<select id="amountClassPack1" resultType="com.jero.index.vo.AmountClassDTO">
|
||||
SELECT chargeUse,
|
||||
ifnull(SUM(${column}),0) as money
|
||||
FROM v_revenue_analysis_pack v
|
||||
<where>
|
||||
year like concat('%',#{year},'%')
|
||||
<if test="departCode != null and departCode != ''">
|
||||
and departCode = #{departCode}
|
||||
</if>
|
||||
</where>
|
||||
GROUP BY chargeUse
|
||||
</select>
|
||||
|
||||
<select id="amountClass1" resultType="com.jero.index.vo.AmountClassDTO">
|
||||
SELECT chargeUse,
|
||||
ifnull(SUM(${column}),0) as money
|
||||
|
||||
Reference in New Issue
Block a user