Merge remote-tracking branch 'origin/master'

This commit is contained in:
baozhipeng
2021-09-23 16:12:54 +08:00
14 changed files with 741 additions and 67 deletions
@@ -50,7 +50,7 @@ public class PayMailContractController extends JeroController<PayMailContract, I
HttpServletRequest req) {
QueryWrapper<PayMailBillList> queryWrapper = QueryGenerator.initQueryWrapper(payMailBillList, req.getParameterMap());
Page<PayMailBillList> page = new Page<>(pageNo, pageSize);
queryWrapper.orderByDesc("create_time");
queryWrapper.orderByDesc("pc.create_time");
IPage<PayMailBillList> pageList = payMailContractService.pageContract(page, queryWrapper);
return Result.OK(pageList);
}
@@ -27,10 +27,7 @@ import org.apache.poi.hssf.record.DVALRecord;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
@@ -128,7 +125,7 @@ public class PayWorkingGroupStatisticsController {
*/
@GetMapping(value = "/exportXls2")
@ApiOperation(value="工作组项目统计-统计导出excel", notes="工作组项目统计-统计导出excel")
public ModelAndView exportXls2(PayWorkingGroupSearch payWorkingGroupSearch) {
public ModelAndView exportXls2( PayWorkingGroupSearch payWorkingGroupSearch) {
if(payWorkingGroupSearch.getYear()==null|| payWorkingGroupSearch.getYear().equals("")){
Calendar calendar= Calendar.getInstance();
String year = String.valueOf(calendar.get(Calendar.YEAR));
@@ -117,4 +117,21 @@ public interface PayWorkingGroupMapper extends BaseMapper<PayWorkingGroup> {
* @return
*/
IPage<PrincipalPeopleDetail> queryPageListForPrincipalDetail(Page<PrincipalPeopleDetail> page,@Param("principalPeopleDetailSearch") PrincipalPeopleDetailSearch principalPeopleDetailSearch);
/**
* 企业来款统计
* @param page
* @param companyComeMoneySearch
* @param idList
* @return
*/
IPage<CompanyComeMoneyList> queryPageListForCompany(Page<CompanyComeMoneyList> page,@Param("companyComeMoneySearch") CompanyComeMoneySearch companyComeMoneySearch,@Param("idList") List<String> idList);
/**
* 企业来款详情
* @param page
* @param companyComeMoneyDetailSearch
* @return
*/
IPage<CompanyComeMoneyDetail> queryPageListForCompanyDetail(Page<CompanyComeMoneyDetail> page,@Param("companyComeMoneyDetailSearch") CompanyComeMoneyDetailSearch companyComeMoneyDetailSearch);
}
@@ -160,7 +160,6 @@
pwgs.id,
pwg.working_group_project AS projectName,
pwg.principal_name_a as principalName,
pwg.principal_id_a as principalId,
pwgs.charge_company_temporary_name AS chargeCompanyTemporaryName,
pwgs.receivable_amount as allMoney,
pwgs.paid_amount as comeAllMoney,
@@ -217,7 +216,6 @@
pcp.id,
pcp.charge_project AS projectName,
pcp.principal_name as principalName,
pcp.principal_id as principalId,
pcp.charge_company_temporary_name AS chargeCompanyTemporaryName,
pcp.receivable_amount as allMoney,
pcp.paid_amount as comeAllMoney,
@@ -271,7 +269,6 @@
pmps.id,
pmp.project_name AS projectName,
pmp.director_name as principalName,
pmp.director_id as principalId,
pmps.company_name AS chargeCompanyTemporaryName,
pmps.amount_receivable as allMoney,
pmps.paid_amount as comeAllMoney,
@@ -328,14 +325,13 @@
pms.id,
pm.meeting_name AS projectName,
pm.director_name as principalName,
pm.director_id as principalId,
pms.company_name AS chargeCompanyTemporaryName,
pms.amount_receivable as allMoney,
pms.paid_amount as comeAllMoney,
pms.charge_use as chargeUse,
sd.depart_name as depart,
pms.create_time as createTime
FROM pay_meeting pm left join pay_meeting_situation pms on(pm.id=pms.meeting_id)
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.org_code=sd.org_code)
<where>
<if test="allProjectStatisticsSearch.projectName != null and allProjectStatisticsSearch.projectName != ''">
@@ -386,8 +382,7 @@
tmp.project_name AS projectName,
tmps.company_name AS chargeCompanyTemporaryName,
tmps.amount_receivable as allMoney,
tmp.update_by as principalName,
tmp.id as principalId,
"" as principalName,
tmps.paid_amount as comeAllMoney,
tmps.charge_use as chargeUse,
sd.depart_name as depart,
@@ -433,7 +428,7 @@
</if>
</otherwise>
</choose>
</where>) pp left join
</where>) pp right join
(select pwgs.id as id
from pay_working_group_subitem pwgs
left join pay_payment_record ppr on(pwgs.id=ppr.project_id)
@@ -470,7 +465,7 @@
<!--个人来款统计-->
<select id="queryPageListForPrincipal" resultType="com.jero.statistics.entity.PrincipalPeopleList">
select pp.principalId, principalName,allMoney,comeAllMoney,createTime,
select principalId, principalName,allMoney,comeAllMoney,createTime,
CONCAT(CAST(ROUND((comeAllMoney/allMoney)*100,2) AS CHAR),'%') AS finishRate from
(select
principalId,principalName,SUM(allMoney) as allMoney,sum(comeAllMoney) as comeAllMoney,
@@ -483,11 +478,14 @@
sum(pwgs.comeAllMoney) as comeAllMoney,
pwg.create_time as createTime
FROM pay_working_group pwg
LEFT JOIN (select id,working_group_id,SUM(receivable_amount) AS allMoney,SUM(paid_amount) AS comeAllMoney
from pay_working_group_subitem GROUP BY working_group_id) pwgs
LEFT JOIN (
select pwg1s.id,working_group_id,SUM(receivable_amount) AS allMoney,SUM(paid_amount) AS comeAllMoney
from pay_working_group_subitem pwg1s inner join pay_payment_record ppr on(pwg1s.id=ppr.project_id)
WHERE ppr.payment_date like concat('%',#{principalPeopleSearch.year},'%')
GROUP BY pwg1s.working_group_id
) 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.org_code=sd.org_code)
left join pay_payment_record ppr on(pwgs.id=ppr.project_id)
<where>
<if test="idList != null and idList != ''">
pwg.principal_id_a in
@@ -501,7 +499,6 @@
<if test="principalPeopleSearch.departCode != null and principalPeopleSearch.departCode != ''">
AND su.org_code =#{principalPeopleSearch.departCode}
</if>
</where> GROUP BY pwg.principal_id_a
union all
SELECT
@@ -510,9 +507,12 @@
sum(pcp.receivable_amount) as allMoney,
sum(pcp.paid_amount) as comeAllMoney,
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.org_code=sd.org_code) left join pay_payment_record ppr on(pcp.id=ppr.project_id)
FROM pay_common_project pcp inner join pay_payment_record ppr on(pcp.id=ppr.project_id)
left JOIN sys_user su on(pcp.principal_id=su.id) left join sys_depart sd
on(su.org_code=sd.org_code)
<where>
ppr.payment_date like
concat('%',#{principalPeopleSearch.year},'%')
<if test="idList != null and idList != ''">
pcp.principal_id in
<foreach item="item" open="(" separator="," close=")" collection="idList">
@@ -535,11 +535,15 @@
pmps.comeAllMoney as comeAllMoney,
pmp.create_time as createTime
FROM pay_member_project pmp left join (select
id,project_id,SUM(amount_receivable) AS allMoney,SUM(paid_amount) AS
pmp1s.id,pmp1s.project_id as projectId,SUM(amount_receivable) AS allMoney,SUM(paid_amount) AS
comeAllMoney
from pay_member_project_subitem GROUP BY project_id) pmps on(pmp.id=pmps.project_id)
from pay_member_project_subitem pmp1s
inner join pay_payment_record ppr on(pmp1s.id=ppr.project_id)
WHERE ppr.payment_date like
concat('%',#{principalPeopleSearch.year},'%')
GROUP BY pmp1s.project_id) pmps on(pmp.id=pmps.projectId)
left JOIN sys_user su on(pmp.director_id=su.id) left join sys_depart sd on(su.org_code=sd.org_code)
left join pay_payment_record ppr on(pmps.id=ppr.project_id)
<where>
<if test="idList != null and idList != ''">
pmp.director_id in
@@ -548,9 +552,8 @@
</foreach>
</if>
<if test="principalPeopleSearch.year != null and principalPeopleSearch.year != ''">
AND date_format(ppr.payment_date,'%Y-%m-%d') LIKE
concat('%',concat(#{principalPeopleSearch.year},'%'))
<if test="principalPeopleSearch.departCode != null and principalPeopleSearch.departCode != ''">
AND su.org_code =#{principalPeopleSearch.departCode}
</if>
<if test="principalPeopleSearch.principalId != null and principalPeopleSearch.principalId != ''">
AND pmp.director_id=#{principalPeopleSearch.principalId}
@@ -563,11 +566,15 @@
sum(pms.allMoney) as allMoney,
sum(pms.comeAllMoney) as comeAllMoney,
pm.create_time as createTime
FROM pay_meeting pm left join (select id,meeting_id,SUM(amount_receivable) AS
FROM pay_meeting pm left join (select pm1s.id,meeting_id,SUM(amount_receivable) AS
allMoney,SUM(paid_amount) AS comeAllMoney
from pay_meeting_situation GROUP BY meeting_id) pms on(pm.id=pms.meeting_id)
from pay_meeting_situation pm1s
inner join pay_payment_record ppr on(pm1s.id=ppr.project_id)
WHERE ppr.payment_date like
concat('%',#{principalPeopleSearch.year},'%')
GROUP BY pm1s.meeting_id) 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.org_code=sd.org_code)
left join pay_payment_record ppr on(pms.id=ppr.project_id)
<where>
<if test="idList != null and idList != ''">
pm.director_id in
@@ -582,38 +589,7 @@
<if test="principalPeopleSearch.principalId != null and principalPeopleSearch.principalId != ''">
AND pm.director_id=#{principalPeopleSearch.principalId}
</if>
</where> group by pm.director_id) principalPeople group by principalPeople.principalId) pp inner join
-- 判断来款项目的来款年份
(select * from (SELECT
pwg.principal_id_a as principalId
FROM pay_working_group pwg
inner JOIN (select pwgs.id as id,working_group_id
from pay_working_group_subitem pwgs
left join pay_payment_record ppr on(pwgs.id=ppr.project_id)
WHERE ppr.payment_date like
concat('%',#{principalPeopleSearch.year},'%')
GROUP BY working_group_id) pwgss ON (pwg.id=pwgss.working_group_id)
GROUP BY pwg.principal_id_a
union ALL
SELECT
pcp.principal_id as principalId
FROM pay_common_project pcp inner JOIN pay_payment_record ppr on(pcp.id=ppr.project_id) WHERE ppr.payment_date like concat('%',#{principalPeopleSearch.year},'%')
group by pcp.principal_id
union all
SELECT
pmp.director_id as principalId
FROM pay_member_project pmp left join pay_member_project_subitem pmps on(pmp.id=pmps.project_id) inner join pay_payment_record ppr on(pmps.id=ppr.project_id)
WHERE ppr.payment_date like
concat('%',#{principalPeopleSearch.year},'%')
group by director_id
union all
SELECT
pm.director_id as principalId
FROM pay_meeting pm left join pay_meeting_situation pms on(pm.id=pms.meeting_id) left join pay_payment_record ppr on(pms.id=ppr.project_id)
WHERE ppr.payment_date like concat('%',#{principalPeopleSearch.year},'%')
group by director_id) prr3 group by prr3.principalId) pprr on(pp.principalId=pprr.principalId)
</where> ) pp
<where>
<choose>
<when test="principalPeopleSearch.allMoney != null and principalPeopleSearch.allMoney != '' and principalPeopleSearch.allMoneyTwo != null and principalPeopleSearch.allMoneyTwo != ''">
@@ -630,7 +606,7 @@
</otherwise>
</choose>
</where>
order by pp.createTime
group by pp.principalId order by pp.createTime) ppp
</select>
@@ -649,7 +625,7 @@
<where>
pwg.principal_id_a = #{principalPeopleDetailSearch.principalNameId}
<if test="principalPeopleDetailSearch.projectName != null and principalPeopleDetailSearch.projectName != ''">
AND pwgs.charge_project LIKE
AND pwg.working_group_project LIKE
concat('%',concat(#{principalPeopleDetailSearch.projectName},'%'))
</if>
<if test="principalPeopleDetailSearch.chargeUse != null and principalPeopleDetailSearch.chargeUse != ''">
@@ -906,5 +882,314 @@
</select>
<!--企业来款统计-->
<select id="queryPageListForCompany" resultType="com.jero.statistics.entity.CompanyComeMoneyList">
select chargeCompanyTemporaryId, chargeCompanyTemporaryName,allMoney,comeAllMoney,createTime,
CONCAT(CAST(ROUND((comeAllMoney/allMoney)*100,2) AS CHAR),'%') AS finishRate from
(select
chargeCompanyTemporaryId,chargeCompanyTemporaryName,SUM(allMoney) as allMoney,sum(comeAllMoney) as comeAllMoney,
createTime
from
(SELECT
pwgs.charge_company_temporary_id as chargeCompanyTemporaryId,
pwgs.charge_company_temporary_name as chargeCompanyTemporaryName,
sum(allMoney) as allMoney,
sum(comeAllMoney) as comeAllMoney,
pwgs.create_time as createTime
FROM pay_working_group pwg
right JOIN (
select pwg1s.id,working_group_id,SUM(receivable_amount) AS allMoney,SUM(paid_amount) AS comeAllMoney,charge_company_temporary_id,charge_company_temporary_name,pwg1s.create_time
from pay_working_group_subitem pwg1s inner join pay_payment_record ppr on(pwg1s.id=ppr.project_id)
WHERE ppr.payment_date like concat('%',#{companyComeMoneySearch.year},'%')
GROUP BY pwg1s.charge_company_temporary_id
) 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.org_code=sd.org_code)
<where>
<if test="idList != null and idList != ''">
pwg.principal_id_a in
<foreach item="item" open="(" separator="," close=")" collection="idList">
#{item}
</foreach>
</if>
<if test="companyComeMoneySearch.chargeCompanyTemporaryId != null and companyComeMoneySearch.chargeCompanyTemporaryId != ''">
AND pwgs.charge_company_temporary_id=#{companyComeMoneySearch.chargeCompanyTemporaryId}
</if>
</where> GROUP BY pwgs.charge_company_temporary_id
union all
SELECT
pcp.charge_company_temporary_id as chargeCompanyTemporaryId,
pcp.charge_company_temporary_name as chargeCompanyTemporaryName,
sum(pcp.receivable_amount) as allMoney,
sum(pcp.paid_amount) as comeAllMoney,
pcp.create_time as createTime
FROM pay_common_project pcp inner join pay_payment_record ppr on(pcp.id=ppr.project_id)
left JOIN sys_user su on(pcp.principal_id=su.id) left join sys_depart sd
on(su.org_code=sd.org_code)
<where>
ppr.payment_date like
concat('%',#{companyComeMoneySearch.year},'%')
<if test="idList != null and idList != ''">
pcp.principal_id in
<foreach item="item" open="(" separator="," close=")" collection="idList">
#{item}
</foreach>
</if>
<if test="companyComeMoneySearch.chargeCompanyTemporaryId != null and companyComeMoneySearch.chargeCompanyTemporaryId != ''">
AND pcp.charge_company_temporary_id=#{companyComeMoneySearch.chargeCompanyTemporaryId}
</if>
</where> group by pcp.charge_company_temporary_id
union all
SELECT
pmps.company_temporary_id as chargeCompanyTemporaryId,
pmps.company_name as chargeCompanyTemporaryName,
sum(pmps.allMoney) as allMoney,
pmps.comeAllMoney as comeAllMoney,
pmps.create_time as createTime
FROM pay_member_project pmp right join (select
pmp1s.id,pmp1s.project_id as projectId,SUM(amount_receivable) AS allMoney,SUM(paid_amount) AS
comeAllMoney,pmp1s.create_time,company_temporary_id,company_name
from pay_member_project_subitem pmp1s
inner join pay_payment_record ppr on(pmp1s.id=ppr.project_id)
WHERE ppr.payment_date like
concat('%',#{companyComeMoneySearch.year},'%')
GROUP BY pmp1s.company_temporary_id) pmps on(pmp.id=pmps.projectId)
left JOIN sys_user su on(pmp.director_id=su.id) left join sys_depart sd on(su.org_code=sd.org_code)
<where>
<if test="idList != null and idList != ''">
pmp.director_id in
<foreach item="item" open="(" separator="," close=")" collection="idList">
#{item}
</foreach>
</if>
<if test="companyComeMoneySearch.chargeCompanyTemporaryId != null and companyComeMoneySearch.chargeCompanyTemporaryId != ''">
AND pmps.company_temporary_id=#{companyComeMoneySearch.chargeCompanyTemporaryId}
</if>
</where> group by pmps.company_temporary_id
union all
SELECT
pms.company_id as chargeCompanyTemporaryId,
pms.company_name as chargeCompanyTemporaryName,
sum(pms.allMoney) as allMoney,
sum(pms.comeAllMoney) as comeAllMoney,
pms.create_time as createTime
FROM pay_meeting pm right join (select pm1s.id,meeting_id,SUM(amount_receivable) AS
allMoney,SUM(paid_amount) AS comeAllMoney,pm1s.create_time,company_id,company_name
from pay_meeting_situation pm1s
inner join pay_payment_record ppr on(pm1s.id=ppr.project_id)
WHERE ppr.payment_date like
concat('%',#{companyComeMoneySearch.year},'%')
GROUP BY pm1s.company_id) 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.org_code=sd.org_code)
<where>
<if test="idList != null and idList != ''">
pm.director_id in
<foreach item="item" open="(" separator="," close=")" collection="idList">
#{item}
</foreach>
</if>
<if test="companyComeMoneySearch.chargeCompanyTemporaryId != null and companyComeMoneySearch.chargeCompanyTemporaryId != ''">
AND pms.company_id=#{companyComeMoneySearch.chargeCompanyTemporaryId}
</if>
</where> group by pms.company_id) pp
<where>
<choose>
<when test="companyComeMoneySearch.allMoney != null and companyComeMoneySearch.allMoney != '' and companyComeMoneySearch.allMoneyTwo != null and companyComeMoneySearch.allMoneyTwo != ''">
pp.allMoney > #{companyComeMoneySearch.allMoney} and pp.allMoney <![CDATA[<]]>
#{companyComeMoneySearch.allMoneyTwo}
</when>
<otherwise>
<if test="companyComeMoneySearch.allMoney != null and companyComeMoneySearch.allMoney != ''">
AND pp.allMoney > #{companyComeMoneySearch.allMoney}
</if>
<if test="companyComeMoneySearch.allMoneyTwo != null and companyComeMoneySearch.allMoneyTwo != ''">
AND pp.allMoney <![CDATA[<]]> #{companyComeMoneySearch.allMoneyTwo}
</if>
</otherwise>
</choose>
</where>
group by pp.chargeCompanyTemporaryId order by pp.createTime) ppp
</select>
<!-- 企业来款详情统计-->
<select id="queryPageListForCompanyDetail" resultType="com.jero.statistics.entity.CompanyComeMoneyDetail">
select * from (SELECT
pwgs.create_time as createTime,
pwgs.id,
pwg.working_group_project as projectName,
pwg.principal_id_a as principalId,
pwgs.receivable_amount AS allMoney,
pwgs.paid_amount AS comeAllMoney,
pwgs.charge_use as chargeUse
FROM pay_working_group_subitem pwgs
left join pay_working_group pwg on (pwgs.working_group_id=pwg.id)
<where>
pwgs.charge_company_temporary_id = #{companyComeMoneyDetailSearch.chargeCompanyTemporaryId}
<if test="CompanyComeMoneyDetailSearch.projectName != null and CompanyComeMoneyDetailSearch.projectName != ''">
AND pwg.working_group_project LIKE
concat('%',concat(#{CompanyComeMoneyDetailSearch.projectName},'%'))
</if>
<if test="CompanyComeMoneyDetailSearch.chargeUse != null and CompanyComeMoneyDetailSearch.chargeUse != ''">
AND pwgs.charge_use=#{CompanyComeMoneyDetailSearch.chargeUse}
</if>
<if test="CompanyComeMoneyDetailSearch.inAccountStatue != null and CompanyComeMoneyDetailSearch.inAccountStatue != ''">
AND pwgs.in_account=#{CompanyComeMoneyDetailSearch.payStatue}
</if>
<choose>
<when test="CompanyComeMoneyDetailSearch.allMoney != null and CompanyComeMoneyDetailSearch.allMoney != '' and CompanyComeMoneyDetailSearch.allMoneyTwo != null and CompanyComeMoneyDetailSearch.allMoneyTwo != ''">
pwgs.receivable_amount > #{CompanyComeMoneyDetailSearch.allMoney} and pwgs.receivable_amount <![CDATA[<]]>
#{CompanyComeMoneyDetailSearch.allMoneyTwo}
</when>
<otherwise>
<if test="CompanyComeMoneyDetailSearch.allMoney != null and CompanyComeMoneyDetailSearch.allMoney != ''">
AND pwgs.receivable_amount > #{CompanyComeMoneyDetailSearch.allMoney}
</if>
<if test="CompanyComeMoneyDetailSearch.allMoneyTwo != null and CompanyComeMoneyDetailSearch.allMoneyTwo != ''">
AND pwgs.receivable_amount <![CDATA[<]]> #{CompanyComeMoneyDetailSearch.allMoneyTwo}
</if>
</otherwise>
</choose>
</where>
union ALL
SELECT
pcp.create_time as createTime,
pcp.id,
pcp.charge_project as projectName,
pcp.principal_id as principalId,
pcp.receivable_amount AS allMoney,
pcp.paid_amount AS comeAllMoney,
pcp.charge_use as chargeUse
FROM pay_common_project pcp
<where>
pcp.charge_company_id = #{CompanyComeMoneyDetailSearch.chargeCompanyTemporaryId}
<if test="CompanyComeMoneyDetailSearch.projectName != null and CompanyComeMoneyDetailSearch.projectName != ''">
AND pcp.charge_project LIKE
concat('%',concat(#{CompanyComeMoneyDetailSearch.projectName},'%'))
</if>
<if test="CompanyComeMoneyDetailSearch.chargeUse != null and CompanyComeMoneyDetailSearch.chargeUse != ''">
AND pcp.charge_use=#{CompanyComeMoneyDetailSearch.chargeUse}
</if>
<if test="CompanyComeMoneyDetailSearch.inAccountStatue != null and CompanyComeMoneyDetailSearch.inAccountStatue != ''">
AND pcp.in_account=#{CompanyComeMoneyDetailSearch.payStatue}
</if>
<choose>
<when test="CompanyComeMoneyDetailSearch.allMoney != null and CompanyComeMoneyDetailSearch.allMoney != '' and CompanyComeMoneyDetailSearch.allMoneyTwo != null and CompanyComeMoneyDetailSearch.allMoneyTwo != ''">
pcp.receivable_amount > #{CompanyComeMoneyDetailSearch.allMoney} and pcp.receivable_amount <![CDATA[<]]>
#{CompanyComeMoneyDetailSearch.allMoneyTwo}
</when>
<otherwise>
<if test="CompanyComeMoneyDetailSearch.allMoney != null and CompanyComeMoneyDetailSearch.allMoney != ''">
AND pcp.receivable_amount > #{CompanyComeMoneyDetailSearch.allMoney}
</if>
<if test="CompanyComeMoneyDetailSearch.allMoneyTwo != null and CompanyComeMoneyDetailSearch.allMoneyTwo != ''">
AND pcp.receivable_amount <![CDATA[<]]> #{CompanyComeMoneyDetailSearch.allMoneyTwo}
</if>
</otherwise>
</choose>
</where>
union ALL
SELECT
pms.create_time as createTime,
pms.id,
pm.meeting_name as projectName,
pm.director_id as principalId,
pms.amount_receivable AS allMoney,
pms.paid_amount AS comeAllMoney,
pms.charge_use as chargeUse
FROM pay_meeting pm left join pay_meeting_situation pms on(pm.id=pms.meeting_id)
<where>
pm.charge_company_id = #{CompanyComeMoneyDetailSearch.chargeCompanyTemporaryId}
<if test="CompanyComeMoneyDetailSearch.projectName != null and CompanyComeMoneyDetailSearch.projectName != ''">
AND pm.meeting_name LIKE
concat('%',concat(#{CompanyComeMoneyDetailSearch.projectName},'%'))
</if>
<if test="CompanyComeMoneyDetailSearch.chargeUse != null and CompanyComeMoneyDetailSearch.chargeUse != ''">
AND pms.charge_use=#{CompanyComeMoneyDetailSearch.chargeUse}
</if>
<if test="CompanyComeMoneyDetailSearch.inAccountStatue != null and CompanyComeMoneyDetailSearch.inAccountStatue != ''">
AND pms.in_account=#{CompanyComeMoneyDetailSearch.payStatue}
</if>
<choose>
<when test="CompanyComeMoneyDetailSearch.allMoney != null and CompanyComeMoneyDetailSearch.allMoney != '' and CompanyComeMoneyDetailSearch.allMoneyTwo != null and CompanyComeMoneyDetailSearch.allMoneyTwo != ''">
pms.amount_receivable > #{CompanyComeMoneyDetailSearch.allMoney} and pms.amount_receivable <![CDATA[<]]>
#{CompanyComeMoneyDetailSearch.allMoneyTwo}
</when>
<otherwise>
<if test="CompanyComeMoneyDetailSearch.allMoney != null and CompanyComeMoneyDetailSearch.allMoney != ''">
AND pms.amount_receivable > #{CompanyComeMoneyDetailSearch.allMoney}
</if>
<if test="CompanyComeMoneyDetailSearch.allMoneyTwo != null and CompanyComeMoneyDetailSearch.allMoneyTwo != ''">
AND pms.amount_receivable <![CDATA[<]]> #{CompanyComeMoneyDetailSearch.allMoneyTwo}
</if>
</otherwise>
</choose>
</where>
union ALL
SELECT
pmps.create_time as createTime,
pmp.director_id as principalId,
pmps.id,
pmp.project_name as projectName,
pmps.amount_receivable AS allMoney,
pmps.paid_amount AS comeAllMoney,
pmps.charge_use as chargeUse
FROM pay_member_project pmp left join pay_member_project_subitem pmps on(pmp.id=pmps.project_id)
<where>
pmp.director_id = #{CompanyComeMoneyDetailSearch.principalNameId}
<if test="CompanyComeMoneyDetailSearch.projectName != null and CompanyComeMoneyDetailSearch.projectName != ''">
AND pmp.project_name LIKE
concat('%',concat(#{CompanyComeMoneyDetailSearch.projectName},'%'))
</if>
<if test="CompanyComeMoneyDetailSearch.chargeUse != null and CompanyComeMoneyDetailSearch.chargeUse != ''">
AND pmps.charge_use=#{CompanyComeMoneyDetailSearch.chargeUse}
</if>
<if test="CompanyComeMoneyDetailSearch.inAccountStatue != null and CompanyComeMoneyDetailSearch.inAccountStatue != ''">
AND pmps.in_account=#{CompanyComeMoneyDetailSearch.payStatue}
</if>
<choose>
<when test="CompanyComeMoneyDetailSearch.allMoney != null and CompanyComeMoneyDetailSearch.allMoney != '' and CompanyComeMoneyDetailSearch.allMoneyTwo != null and CompanyComeMoneyDetailSearch.allMoneyTwo != ''">
pmps.amount_receivable > #{CompanyComeMoneyDetailSearch.allMoney} and pmps.amount_receivable <![CDATA[<]]>
#{CompanyComeMoneyDetailSearch.allMoneyTwo}
</when>
<otherwise>
<if test="CompanyComeMoneyDetailSearch.allMoney != null and CompanyComeMoneyDetailSearch.allMoney != ''">
AND pmps.amount_receivable > #{CompanyComeMoneyDetailSearch.allMoney}
</if>
<if test="CompanyComeMoneyDetailSearch.allMoneyTwo != null and CompanyComeMoneyDetailSearch.allMoneyTwo != ''">
AND pmps.amount_receivable <![CDATA[<]]> #{CompanyComeMoneyDetailSearch.allMoneyTwo}
</if>
</otherwise>
</choose>
</where>) pp
inner join
-- 判断来款项目的来款年份
(select pwgs.id as id
from pay_working_group_subitem pwgs
left join pay_payment_record ppr on(pwgs.id=ppr.project_id)
WHERE ppr.payment_date like
concat('%',#{CompanyComeMoneyDetailSearch.year},'%')
GROUP BY pwgs.id
union ALL
SELECT
pcp.id as id
FROM pay_common_project pcp left JOIN pay_payment_record ppr on(pcp.id=ppr.project_id) WHERE ppr.payment_date like concat('%',#{CompanyComeMoneyDetailSearch.year},'%')
group by pcp.id
union all
SELECT
pmps.id as id from
pay_member_project_subitem pmps left join pay_payment_record ppr on(pmps.id=ppr.project_id)
WHERE ppr.payment_date like
concat('%',#{CompanyComeMoneyDetailSearch.year},'%')
group by pmps.id
union all
SELECT
pms.id as id from pay_meeting_situation pms left join pay_payment_record ppr on (pms.id=ppr.project_id)
WHERE ppr.payment_date like concat('%',#{CompanyComeMoneyDetailSearch.year},'%')
group by pms.id) pprr on(pp.id=pprr.id)
order by pp.createTime
</select>
</mapper>
@@ -16,6 +16,7 @@
<select id="queryPageList" resultType="com.jero.project.entity.PayWorkingGroupSubItem">
SELECT
pwgs.id,
pwgs.charge_project AS chargeProject,
pwgs.working_group_id AS workingGroupId,
pwgs.charge_company_id AS chargeCompanyId,
pwgs.charge_company_temporary_id AS chargeCompanyTemporaryId,
@@ -78,7 +79,7 @@
<where>
pwgs.working_group_id = #{id}
<if test="payWorkingGroupSubletSearch.projectName != null and payWorkingGroupSubletSearch.projectName != ''">
AND pwgs.charge_project LIKE
AND pwg.working_group_project LIKE
concat('%',concat(#{payWorkingGroupSubletSearch.projectName},'%'))
</if>
<if test="payWorkingGroupSubletSearch.chargeUse != null and payWorkingGroupSubletSearch.chargeUse != ''">
@@ -142,4 +142,21 @@ public interface IPayWorkingGroupService extends IService<PayWorkingGroup> {
* @return
*/
List<PrincipalPeopleDetail> queryPageListForPrincipalDetailExcel(PrincipalPeopleDetailSearch principalPeopleDetailSearch);
/**
* 企业来款统计
* @param page
* @param companyComeMoneySearch
* @param idList
* @return
*/
IPage<CompanyComeMoneyList> queryPageListForCompany(Page<CompanyComeMoneyList> page, CompanyComeMoneySearch companyComeMoneySearch, List<String> idList);
/**
* 企业来款详情统计
* @param page
* @param companyComeMoneyDetailSearch
* @return
*/
IPage<CompanyComeMoneyDetail> queryPageListForCompanyDetail(Page<CompanyComeMoneyDetail> page, CompanyComeMoneyDetailSearch companyComeMoneyDetailSearch);
}
@@ -224,11 +224,39 @@ public class PayWorkingGroupServiceImpl extends ServiceImpl<PayWorkingGroupMappe
return payWorkingGroupMapper.queryPageListForStatistics(payWorkingGroupSearch,idList);
}
/**
* 个人来款详情
* @param principalPeopleDetailSearch
* @return
*/
@Override
public List<PrincipalPeopleDetail> queryPageListForPrincipalDetailExcel(PrincipalPeopleDetailSearch principalPeopleDetailSearch) {
return payWorkingGroupMapper.queryPageListForPrincipalDetail(principalPeopleDetailSearch);
}
/**
* 企业来款统计
* @param page
* @param companyComeMoneySearch
* @param idList
* @return
*/
@Override
public IPage<CompanyComeMoneyList> queryPageListForCompany(Page<CompanyComeMoneyList> page, CompanyComeMoneySearch companyComeMoneySearch, List<String> idList) {
return payWorkingGroupMapper.queryPageListForCompany(page,companyComeMoneySearch,idList);
}
/**
* 企业来款详情统计
* @param page
* @param companyComeMoneyDetailSearch
* @return
*/
@Override
public IPage<CompanyComeMoneyDetail> queryPageListForCompanyDetail(Page<CompanyComeMoneyDetail> page, CompanyComeMoneyDetailSearch companyComeMoneyDetailSearch) {
return payWorkingGroupMapper.queryPageListForCompanyDetail(page,companyComeMoneyDetailSearch);
}
/**
* @Description 校验是存在关联合同的项目
* @Author lqt
@@ -100,7 +100,7 @@ public class AllProjectStatisticsController {
*/
@GetMapping(value = "/statistics/excel")
@ApiOperation(value = "所领导统计-导出统计", notes = "所领导统计-导出统计")
public ModelAndView excel(AllProjectStatisticsSearch allProjectStatisticsSearch) {
public ModelAndView excel( AllProjectStatisticsSearch allProjectStatisticsSearch) {
LoginUser sysUser =(LoginUser) SecurityUtils.getSubject().getPrincipal();
String roleCode = sysUser.getRoleCode();
if(constant.SLD.equals(roleCode)||constant.ADMIN.equals(roleCode)) {
@@ -0,0 +1,194 @@
package com.jero.statistics.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.api.vo.Result;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.vo.LoginUser;
import com.jero.mail.commont.constant;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.mapper.SysUserMapper;
import com.jero.project.service.IPayWorkingGroupService;
import com.jero.statistics.entity.*;
import com.jero.util.AmountUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author zql
* @date 2021/9/23 14:07
*/
@Api(tags="企业来款统计")
@RestController
@RequestMapping("/statistics/companyComeMoney")
@Slf4j
public class CompanyComeMoneyStatisticsController {
@Resource
private SysUserMapper userMapper;
@Autowired
private ISysBaseAPI sysBaseAPI;
@Autowired
private IPayWorkingGroupService payWorkingGroupService;
/**
* 分页列表查询
*
* @param companyComeMoneySearch 企业来款统计
* @param pageNo 页数
* @param pageSize 条数
*/
@ApiOperation(value = "企业来款统计-分页列表查询", notes = "企业来款统计-分页列表查询")
@GetMapping(value = "/list")
public Result<?> list(CompanyComeMoneySearch companyComeMoneySearch,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
if (companyComeMoneySearch.getYear() == null || companyComeMoneySearch.getYear().equals("")) {
Calendar calendar = Calendar.getInstance();
String year = String.valueOf(calendar.get(Calendar.YEAR));
companyComeMoneySearch.setYear(year);
}
//根据不同角色加载不同列表的参数
List<String> idList = new ArrayList<>();
//判断登录角色,显示特定工作组内容,判断依据为登录用户的角色和机构编码
LoginUser sysUser =(LoginUser) SecurityUtils.getSubject().getPrincipal();
String roleCode = sysUser.getRoleCode();
//科长
if(constant.BMFZR.equals(roleCode)) {
String orgCode = sysUser.getOrgCode();
List<SysUser> userList = userMapper.selectList(new QueryWrapper<SysUser>().eq("status", 1).eq("del_flag", 0).eq("org_code", orgCode));
idList = userList.stream().map(SysUser::getId).collect(Collectors.toList());
//所领导或者超级管理员
} else if (constant.SLD.equals(roleCode)||constant.ADMIN.equals(roleCode)) {
idList=null;
//企业职员项目负责人
}else if( constant.QYRY.equals(roleCode)){
String userId = sysUser.getId();
idList.add(userId);
}
Page<CompanyComeMoneyList> page = new Page<>(pageNo, pageSize);
IPage<CompanyComeMoneyList> pageList = payWorkingGroupService.queryPageListForCompany(page,companyComeMoneySearch,idList);
HashMap<String, Object> hashMap = new HashMap<>();
double sum = pageList.getRecords() != null ? pageList.getRecords().stream().mapToDouble(t -> Double.parseDouble(t.getAllMoney() == null ? "0" : t.getAllMoney())).sum() : 0;
double sum2 = pageList.getRecords() != null ? pageList.getRecords().stream().mapToDouble(t -> Double.parseDouble(t.getComeAllMoney() == null ? "0" : t.getComeAllMoney())).sum() : 0;
DecimalFormat df = new DecimalFormat("#.00");
hashMap.put("sumOfMoney", sum==0.0?sum:df.format(sum));
hashMap.put("sumOfReallyMoney", sum2==0.0?sum2:df.format(sum2));
hashMap.put("pageList",pageList);
return Result.OK(hashMap);
}
/**
* 分页列表查询
*
* @param companyComeMoneyDetailSearch 企业来款统计
* @param pageNo 页数
* @param pageSize 条数
*/
@ApiOperation(value = "企业来款详情统计-详情分页列表查询", notes = "企业来款详情统计-详情分页列表查询")
@GetMapping(value = "/listForDetail")
public Result<?> listForDetail(CompanyComeMoneyDetailSearch companyComeMoneyDetailSearch,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
if (companyComeMoneyDetailSearch.getYear() == null || companyComeMoneyDetailSearch.getYear().equals("")) {
Calendar calendar = Calendar.getInstance();
String year = String.valueOf(calendar.get(Calendar.YEAR));
companyComeMoneyDetailSearch.setYear(year);
}
Page<CompanyComeMoneyDetail> page = new Page<>(pageNo, pageSize);
IPage<CompanyComeMoneyDetail> pageList = payWorkingGroupService.queryPageListForCompanyDetail(page, companyComeMoneyDetailSearch);
HashMap<String, Object> hashMap = new HashMap<>();
double sum = pageList.getRecords() != null ? pageList.getRecords().stream().mapToDouble(t -> Double.parseDouble(t.getAllMoney() == null ? "0" : t.getAllMoney())).sum() : 0;
double sum2 = pageList.getRecords() != null ? pageList.getRecords().stream().mapToDouble(t -> Double.parseDouble(t.getComeAllMoney() == null ? "0" : t.getComeAllMoney())).sum() : 0;
DecimalFormat df = new DecimalFormat("#.00");
for(CompanyComeMoneyDetail s: pageList.getRecords()){
String key = String.valueOf(s.getChargeUse());
String payment_charge_use = sysBaseAPI.translateDict("payment_charge_use", key);
s.setChargeUse_text(payment_charge_use);
}
hashMap.put("sumOfMoney", sum == 0.0 ? sum : df.format(sum));
hashMap.put("sumOfReallyMoney", sum2 == 0.0 ? sum2 : df.format(sum2));
hashMap.put("pageList", pageList);
return Result.OK(hashMap);
}
/**
*个人来款统计导出
*
*/
@GetMapping(value = "/excel")
@ApiOperation(value = "个人来款统计导出-导出统计", notes = "个人来款统计导出-导出统计")
public ModelAndView excel(PrincipalPeopleSearch principalPeopleSearch) {
if (principalPeopleSearch.getYear() == null || principalPeopleSearch.getYear().equals("")) {
Calendar calendar = Calendar.getInstance();
String year = String.valueOf(calendar.get(Calendar.YEAR));
principalPeopleSearch.setYear(year);
}
//根据不同角色加载不同列表的参数
List<String> idList = new ArrayList<>();
//判断登录角色,显示特定工作组内容,判断依据为登录用户的角色和机构编码
LoginUser sysUser =(LoginUser) SecurityUtils.getSubject().getPrincipal();
String roleCode = sysUser.getRoleCode();
//科长
if(constant.BMFZR.equals(roleCode)) {
String orgCode = sysUser.getOrgCode();
List<SysUser> userList = userMapper.selectList(new QueryWrapper<SysUser>().eq("status", 1).eq("del_flag", 0).eq("org_code", orgCode));
idList = userList.stream().map(SysUser::getId).collect(Collectors.toList());
//所领导或者超级管理员
} else if (constant.SLD.equals(roleCode)||constant.ADMIN.equals(roleCode)) {
idList=null;
//企业职员项目负责人
}else if( constant.QYRY.equals(roleCode)){
String userId = sysUser.getId();
idList.add(userId);
}
List<PrincipalPeopleList> pageList = payWorkingGroupService.queryPageListForPrincipalExcel(principalPeopleSearch,idList);
return AmountUtil.exportListXls(pageList, PrincipalPeopleList.class, "个人来款");
}
/**
*个人来款统详情计导出
*
*/
@GetMapping(value = "/excelDetail")
@ApiOperation(value = "个人来款统详情计导出-导出统计", notes = "个人来款统详情计导出-导出统计")
public ModelAndView excelDetail( PrincipalPeopleDetailSearch principalPeopleDetailSearch) {
if (principalPeopleDetailSearch.getYear() == null || principalPeopleDetailSearch.getYear().equals("")) {
Calendar calendar = Calendar.getInstance();
String year = String.valueOf(calendar.get(Calendar.YEAR));
principalPeopleDetailSearch.setYear(year);
}
List<PrincipalPeopleDetail> pageList = payWorkingGroupService.queryPageListForPrincipalDetailExcel(principalPeopleDetailSearch);
return AmountUtil.exportListXls(pageList, PrincipalPeopleDetail.class, "个人来款详情");
}
}
@@ -140,7 +140,7 @@ public class PrincipalPeopleStatisticsController {
*/
@GetMapping(value = "/excel")
@ApiOperation(value = "个人来款统计导出-导出统计", notes = "个人来款统计导出-导出统计")
public ModelAndView excel( PrincipalPeopleSearch principalPeopleSearch) {
public ModelAndView excel( PrincipalPeopleSearch principalPeopleSearch) {
if (principalPeopleSearch.getYear() == null || principalPeopleSearch.getYear().equals("")) {
Calendar calendar = Calendar.getInstance();
String year = String.valueOf(calendar.get(Calendar.YEAR));
@@ -0,0 +1,31 @@
package com.jero.statistics.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
/**
* @author zql
* @date 2021/9/23 14:16
*/
@Data
public class CompanyComeMoneyDetail {
@ApiModelProperty(value = "项目id")
private String id;
@Excel(name = "来款项目", width = 15)
@ApiModelProperty(value = "来款项目")
private String projectName;
@Excel(name = "应收总金额", width = 15)
@ApiModelProperty(value = "应收金额")
private String allMoney;
@Excel(name = "实收总金额", width = 15)
@ApiModelProperty(value = "实收金额")
private String comeAllMoney;
@Excel(name = "来款用途", width = 15,dicCode = "charge_use")
@ApiModelProperty(value = "来款用途编码")
private String chargeUse;
@ApiModelProperty(value = "来款用途")
private String chargeUse_text;
}
@@ -0,0 +1,42 @@
package com.jero.statistics.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.DecimalMax;
import java.math.BigDecimal;
/**
* @author zql
* @date 2021/9/23 14:16
*/
@Data
public class CompanyComeMoneyDetailSearch {
@ApiModelProperty(value = "来款企业id")
private String chargeCompanyTemporaryId;
@ApiModelProperty(value = "来款项目")
private String projectName;
@ApiModelProperty(value = "来款年份")
private String year;
@ApiModelProperty(value = "来款用途编码")
private String chargeUse;
@ApiModelProperty(value = "付款状态")
private String inAccountStatue;
@DecimalMax(value = "9999999999.99",message = "应收总金额(元)格式错误")
@JsonFormat(shape = JsonFormat.Shape.STRING)
@ApiModelProperty(value = "应收总金额")
private BigDecimal allMoney;
@DecimalMax(value = "9999999999.99",message = "应收总金额(元)格式错误")
@JsonFormat(shape = JsonFormat.Shape.STRING)
@ApiModelProperty(value = "应收总金额范围")
private BigDecimal allMoneyTwo;
}
@@ -0,0 +1,28 @@
package com.jero.statistics.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
/**
* @author zql
* @date 2021/9/23 14:09
*/
@Data
public class CompanyComeMoneyList {
@ApiModelProperty(value = "来款企业id")
private String chargeCompanyTemporaryId;
@Excel(name = "来款企业", width = 15)
@ApiModelProperty(value = "来款企业")
private String chargeCompanyTemporaryName;
@Excel(name = "应收总金额", width = 15)
@ApiModelProperty(value = "应收总金额")
private String allMoney;
@Excel(name = "实收总金额", width = 15)
@ApiModelProperty(value = "实收总金额")
private String comeAllMoney;
}
@@ -0,0 +1,34 @@
package com.jero.statistics.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.DecimalMax;
import java.math.BigDecimal;
/**
* @author zql
* @date 2021/9/23 14:14
*/
@Data
public class CompanyComeMoneySearch {
@ApiModelProperty(value = "来款企业id")
private String chargeCompanyTemporaryId;
@ApiModelProperty(value = "来款年份")
private String year;
@DecimalMax(value = "9999999999.99",message = "应收总金额(元)格式错误")
@JsonFormat(shape = JsonFormat.Shape.STRING)
@ApiModelProperty(value = "应收总金额")
private BigDecimal allMoney;
@DecimalMax(value = "9999999999.99",message = "应收总金额(元)格式错误")
@JsonFormat(shape = JsonFormat.Shape.STRING)
@ApiModelProperty(value = "应收总金额范围")
private BigDecimal allMoneyTwo;
}