需求:按每天统计数据
EarningSettleCompanyRespVO文件
package cn.iocoder.yudao.module.nlm.controller.admin.earningsettle.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.time.LocalDate;
@Schema(description = "管理后台 - 企业结算统计 Response VO")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class EarningSettleCompanyRespVO {
@Schema(description = "当日收入", example = "100.20")
private BigDecimal dailyIncome;
@Schema(description = "日95总宽带", example = "100.20")
private BigDecimal nineFive;
@Schema(description = "移动设备宽带", example = "100.20")
private BigDecimal mobileBroadband;
@Schema(description = "移动设备奖励", example = "100.20")
private BigDecimal mobileIncome;
@Schema(description = "电信设备宽带", example = "100.20")
private BigDecimal telecomBroadband;
@Schema(description = "电信设备奖励", example = "100.20")
private BigDecimal telecomIncome;
@Schema(description = "联通设备宽带", example = "100.20")
private BigDecimal unicomBroadband;
@Schema(description = "联通设备奖励", example = "100.20")
private BigDecimal unicomIncome;
@Schema(description = "结算日期")
private LocalDate settleDate;
private Long userId;
}
Controller文件
@GetMapping("/company")
@Operation(summary = "获得收益结算明细分页")
@PreAuthorize("@ss.hasPermission('nlm:earning-settle:company')")
public CommonResult<PageResult<EarningSettleCompanyRespVO>> getCompanyEarningSettlePage(EarningSettleCompanyPageReqVO pageVO) {
PageResult<EarningSettleCompanyRespVO> pageResult = earningSettleService.getCompanyEarningSettlePage(pageVO);
return success(pageResult);
}
Service文件
/**
* 统计每一天的企业结算数据
* @return PageResult
*/
PageResult<EarningSettleCompanyRespVO> getCompanyEarningSettlePage(EarningSettleCompanyPageReqVO pageVO);
ServiceImpl文件
@Override
public PageResult<EarningSettleCompanyRespVO> getCompanyEarningSettlePage(EarningSettleCompanyPageReqVO pageVO) {
// 验证角色,管理员查看全部,非管理员只查看自己的
AdminUserDO adminUserDO = adminUserMapper.selectById(getLoginUserId());
if(adminUserDO == null || !(adminUserDO.getType().equals(TypeEnum.ADMIN.getType()) || adminUserDO.getType().equals(TypeEnum.SUPER_ADMIN.getType()))){
pageVO.setUserId(getLoginUserId());
}else{
pageVO.setUserId(null);
}
return earningSettleMapper.getCompanyEarningSettlePage(pageVO);
}
mapper文件
default PageResult<EarningSettleCompanyRespVO> getCompanyEarningSettlePage(EarningSettleCompanyPageReqVO pageVO){
IPage<EarningSettleCompanyRespVO> iPage = MyBatisUtils.buildPage(pageVO);
QueryWrapperX<EarningSettleCompanyRespVO> queryWrapperX = new QueryWrapperX<>();
queryWrapperX.eqIfPresent("settle_date", pageVO.getSettleDate());
queryWrapperX.eqIfPresent("user_id", pageVO.getUserId());
queryWrapperX.groupBy("settle_date");
List<EarningSettleCompanyRespVO> list = getCompanyEarningSettleList(iPage, queryWrapperX);
return new PageResult<>(list, iPage.getTotal());
}
List<EarningSettleCompanyRespVO> getCompanyEarningSettleList(IPage<EarningSettleCompanyRespVO> iPage, @Param("ew") QueryWrapperX<EarningSettleCompanyRespVO> ew);
xml文件
<select id="getCompanyEarningSettleList"
resultType="cn.iocoder.yudao.module.nlm.controller.admin.earningsettle.vo.EarningSettleCompanyRespVO">
select
sum(money) as dailyIncome,
sum(if(equipment_type = 0, nine_five, 0)) as mobileBroadband,
sum(if(equipment_type = 0, money, 0)) as mobileIncome,
sum(if(equipment_type = 1, nine_five, 0)) as unicomBroadband,
sum(if(equipment_type = 1, money, 0)) as unicomIncome,
sum(if(equipment_type = 2, nine_five, 0)) as telecomBroadband,
sum(if(equipment_type = 2, money, 0)) as telecomIncome,
settle_date
from nlm_earning_settle
${ew.customSqlSegment}
</select>