add 会员统计 饼图

This commit is contained in:
lijiarao
2024-03-14 15:15:11 +08:00
parent 422c685518
commit 4f12dd8bf8
7 changed files with 98 additions and 13 deletions
@@ -106,6 +106,13 @@ public class DictAspect {
items.add(item);
}
((IPage) ((Result) result).getResult()).setRecords(items);
}else if (((Result) result).getResult() instanceof List){
List<JSONObject> items = new ArrayList<>();
for (Object record :(List) ((Result) result).getResult()) {
JSONObject item = translate(record);
items.add(item);
}
((Result) result).setResult(items);
}else {
Object record = (Object) ((Result) result).getResult();
ObjectMapper mapper = new ObjectMapper();
@@ -39,8 +39,16 @@ public interface TbMemberProjectSubitemMapper extends BaseMapper<TbMemberProject
List<TbMemberProjectSubitem> getAllTakeEffectByCompanyId(@Param("companyId") String companyId);
/**
* 获得所有有效的会员
* @return
*/
List<TbMemberProjectSubitem> getAllTakeEffect();
@Select("SELECT IFNULL(MAX(SUBSTRING(member_no,13)),'0') + 1 FROM tb_member_project_subitem WHERE member_no LIKE concat(#{date},'%')")
Integer getMaxMemberNo(@Param("date") String date);
List<MemberLineChartMap> getByYear(@Param("startYear") Integer startYear, @Param("endYear") Integer endYear);
IPage<TbMemberProjectSubitem> pieChartPage(Page<TbMemberProjectSubitem> page, @Param(Constants.WRAPPER) QueryWrapper<TbMemberProjectSubitem> queryWrapper);
}
@@ -111,4 +111,25 @@
where year(ppr.payment_date) between #{startYear} and #{endYear}
group by year(ppr.payment_date)
</select>
<select id="getAllTakeEffect" resultMap="TbMemberProjectSubitemResultMap">
SELECT t1.*
FROM tb_member_project_subitem t1
INNER JOIN (
SELECT max(invalidation_date), id
FROM tb_member_project_subitem
where invalidation_date >= current_date
GROUP BY company_id) AS t2 ON t2.id = t1.id
</select>
<select id="pieChartPage" resultMap="TbMemberProjectSubitemResultMap">
SELECT t1.*
FROM tb_member_project_subitem t1
INNER JOIN (
SELECT max(invalidation_date), id
FROM tb_member_project_subitem
where invalidation_date >= current_date
GROUP BY company_id) AS t2 ON t2.id = t1.id
${ew.customSqlSegment}
</select>
</mapper>
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.member.vo.CopyMemberVO;
import com.jero.member.vo.EditMemberBenefitsVO;
import com.jero.statistics.entity.MemberLineChartVO;
import com.jero.statistics.entity.MemberPieChartVO;
import java.util.List;
@@ -94,4 +95,8 @@ public interface ITbMemberProjectSubitemService extends IService<TbMemberProject
void copyBatch(CopyMemberVO copyMemberVO);
MemberLineChartVO lineChart(Integer startYear, Integer endYear);
List<MemberPieChartVO> pieChart();
IPage<TbMemberProjectSubitem> pieChartPage(Page<TbMemberProjectSubitem> page, QueryWrapper<TbMemberProjectSubitem> queryWrapper);
}
@@ -13,6 +13,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.enums.PaymentStatusEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.common.service.RolePermissionService;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.vo.DictModel;
import com.jero.common.system.vo.LoginUser;
import com.jero.contract.entity.PayIncomeContractAssociated;
import com.jero.contract.service.IPayIncomeContractAssociatedService;
@@ -35,6 +37,7 @@ import com.jero.payment.service.impl.PayConfirmPaymentRecordService;
import com.jero.project.common.PayProjectCommon;
import com.jero.statistics.entity.MemberLineChartMap;
import com.jero.statistics.entity.MemberLineChartVO;
import com.jero.statistics.entity.MemberPieChartVO;
import com.jero.temporary.service.IPayCompanyManagementTemporaryService;
import com.jero.temporary.service.IPayContactsManagementTemporaryService;
import org.apache.shiro.SecurityUtils;
@@ -85,6 +88,8 @@ public class TbMemberProjectSubitemServiceImpl extends ServiceImpl<TbMemberProje
private IPayMailBillProjectService payMailBillProjectService;
@Resource
private IPayMailBillService payMailBillService;
@Resource
private ISysBaseAPI sysBaseAPI;
/**
* 保存
@@ -370,7 +375,29 @@ public class TbMemberProjectSubitemServiceImpl extends ServiceImpl<TbMemberProje
return memberLineChartVO;
}
private TbMemberProjectSubitem setCopyValue(TbMemberProjectSubitem memberProjectSubitem) {
@Override
public List<MemberPieChartVO> pieChart() {
List<TbMemberProjectSubitem> allTakeEffect = tbMemberProjectSubitemMapper.getAllTakeEffect();
Map<Integer, List<TbMemberProjectSubitem>> collect = allTakeEffect.stream().collect(Collectors.groupingBy(TbMemberProjectSubitem::getMemberNature));
List<DictModel> dictModels = sysBaseAPI.queryDictItemsByCode("member_nature");
List<MemberPieChartVO> memberPieChartVOList = new ArrayList<>();
for (DictModel dictModel : dictModels) {
MemberPieChartVO memberPieChartVO = new MemberPieChartVO();
String value = dictModel.getValue();
memberPieChartVO.setMemberNature(value);
memberPieChartVO.setValue(collect.getOrDefault(Integer.valueOf(value),new ArrayList<>()).size()+"");
memberPieChartVOList.add(memberPieChartVO);
}
return memberPieChartVOList;
}
@Override
public IPage<TbMemberProjectSubitem> pieChartPage(Page<TbMemberProjectSubitem> page, QueryWrapper<TbMemberProjectSubitem> queryWrapper) {
return baseMapper.pieChartPage(page,queryWrapper);
}
private TbMemberProjectSubitem setCopyValue(TbMemberProjectSubitem memberProjectSubitem) {
TbMemberProjectSubitem tbMemberProjectSubitem = new TbMemberProjectSubitem();
tbMemberProjectSubitem.setMemberNo(memberProjectSubitem.getMemberNo());
tbMemberProjectSubitem.setCompanyId(memberProjectSubitem.getCompanyId());
@@ -1,12 +1,18 @@
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.aspect.annotation.AutoLog;
import com.jero.common.aspect.annotation.DictPoint;
import com.jero.common.system.query.QueryGenerator;
import com.jero.common.util.PasswordUtil;
import com.jero.index.vo.LineChartVO;
import com.jero.index.vo.PieChartVO;
import com.jero.meeting.service.IPayMeetingService;
import com.jero.meeting.service.IPayMeetingSituationService;
import com.jero.member.entity.TbMemberProjectSubitem;
import com.jero.member.service.ITbMemberProjectSubitemService;
import com.jero.payment.service.impl.PayConfirmPaymentRecordService;
import com.jero.statistics.entity.MeetingPackStatisticsSearch;
@@ -37,19 +43,32 @@ public class MemberStatisticsController {
@ApiOperation(value = "折线图")
@GetMapping(value = "/lineChart")
public Result<MemberLineChartVO> lineChart(@RequestParam(name="startYear")Integer startYear,
@RequestParam(name="endYear")Integer endYear) {
MemberLineChartVO lineChartVO = memberProjectSubitemService.lineChart(startYear,endYear);
public Result<MemberLineChartVO> lineChart(@RequestParam(name = "startYear") Integer startYear,
@RequestParam(name = "endYear") Integer endYear) {
MemberLineChartVO lineChartVO = memberProjectSubitemService.lineChart(startYear, endYear);
return Result.OK(lineChartVO);
}
@ApiOperation(value = "饼图")
@GetMapping(value = "/pieChart")
public Result<List<MemberPieChartVO>> incomeClassificationStatistics(@RequestParam(name="type", defaultValue = "1")Integer type,
@RequestParam(name="departCode",required = false)String departCode,
@RequestParam(name="year",required = false)String year) {
return Result.OK();
public Result<List<MemberPieChartVO>> pieChart() {
List<MemberPieChartVO> pieChart = memberProjectSubitemService.pieChart();
return Result.OK(pieChart);
}
@ApiOperation(value="饼图-分页列表查询")
@GetMapping(value = "/pieChartPage")
public Result<IPage<TbMemberProjectSubitem>> queryPageList(TbMemberProjectSubitem tbMemberProjectSubitem,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<TbMemberProjectSubitem> queryWrapper = QueryGenerator.initQueryWrapper(tbMemberProjectSubitem, req.getParameterMap());
Page<TbMemberProjectSubitem> page = new Page<>(pageNo, pageSize);
IPage<TbMemberProjectSubitem> pageList = memberProjectSubitemService.pieChartPage(page, queryWrapper);
for (TbMemberProjectSubitem record : pageList.getRecords()) {
record.setEmail(PasswordUtil.decrypt(record.getEmail()));
record.setMobile(PasswordUtil.decrypt(record.getMobile()));
}
return Result.OK(pageList);
}
}
@@ -10,11 +10,9 @@ import lombok.Data;
*/
@Data
public class MemberPieChartVO {
@Dict(dicCode = "payment_charge_use")
@Dict(dicCode = "member_nature")
@ApiModelProperty(value = "分类")
private String name;
private String memberNature;
@ApiModelProperty(value = "")
private String value;
@ApiModelProperty(value = "金额")
private String money;
}