| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268 |
- package com.ydtech.modules.admin.service.impl;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.core.mapper.BaseMapper;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.ydtech.core.page.HttpResult;
- import com.ydtech.modules.admin.dao.DeptBalanceMapper;
- import com.ydtech.modules.admin.dao.SysPartnerMapper;
- import com.ydtech.modules.admin.dao.SysRelationPersonMapper;
- import com.ydtech.modules.admin.model.SysAgencyLeader;
- import com.ydtech.modules.admin.model.SysPartner;
- import com.ydtech.modules.admin.model.SysRelationPerson;
- import com.ydtech.modules.admin.model.SysUser;
- import com.ydtech.modules.admin.model.dto.DeptBalanceDto;
- import com.ydtech.modules.admin.model.dto.MySumAmountQueryDto;
- import com.ydtech.modules.admin.model.dto.SysPartnerConsoleDto;
- import com.ydtech.modules.admin.model.po.SysUserAccount;
- import com.ydtech.modules.admin.model.vo.DeptBalanceVo;
- import com.ydtech.modules.admin.model.vo.PartnerBalanceVo;
- import com.ydtech.modules.admin.model.vo.SysAmountAuditingVo;
- import com.ydtech.modules.admin.model.vo.SysUserVO;
- import com.ydtech.modules.admin.service.*;
- import com.ydtech.modules.base.model.vo.PageVo;
- import com.ydtech.modules.order.service.InsOrdersService;
- import com.ydtech.modules.protocols.service.InsFeeOrderNewService;
- import com.ydtech.utils.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.math.BigDecimal;
- import java.util.*;
- import java.util.stream.Collectors;
- @Service
- public class DeptBalanceServiceImpl implements DeptBalanceService {
- @Autowired
- private SysAgencyLeaderService sysAgencyLeaderService;
- @Autowired
- private DeptBalanceMapper deptBalanceMapper;
- @Autowired
- private SysRelationPersonMapper sysRelationPersonMapper;
- @Autowired
- private SysPartnerMapper sysPartnerMapper;
- @Autowired
- private InsOrdersService insOrdersService;
- @Autowired
- private SysUserService sysUserService;
- @Autowired
- private SysAmountAuditingService sysAmountAuditingService;
- @Autowired
- private InsFeeOrderNewService insFeeOrderNewService;
- @Autowired
- private SysUserAccountService sysUserAccountService;
- /**
- * @version
- * @author: whp
- * @Date: 2024/08/14 9:04
- * @Description: 机构负责人统计
- */
- @Override
- public HttpResult<IPage<DeptBalanceDto>> queryDeptLeaderStatistics(DeptBalanceVo deptBalanceVo) {
- try {
- PageVo<DeptBalanceDto> pageVo = new PageVo<>();
- Page page = new Page(deptBalanceVo.getPageNum(), deptBalanceVo.getPageSize());
- pageVo.setPageNum(deptBalanceVo.getPageNum());
- pageVo.setPageSize(deptBalanceVo.getPageSize());
- IPage<DeptBalanceDto> sysUserListPage = deptBalanceMapper.queryDeptLeaderStatistics(page, deptBalanceVo);
- return HttpResult.ok(sysUserListPage);
- } catch (Exception e) {
- e.printStackTrace();
- return HttpResult.error("查询异常");
- }
- }
- /**
- * @version
- * @author: whp
- * @Date: 2024/08/23 9:04
- * @Description: 合伙人统计
- */
- @Override
- public HttpResult<IPage<SysPartnerConsoleDto>> queryPartnerStatistics(DeptBalanceVo deptBalanceVo) {
- try {
- PageVo<SysPartnerConsoleDto> pageVo = new PageVo<>();
- Page page = new Page(deptBalanceVo.getPageNum(), deptBalanceVo.getPageSize());
- pageVo.setPageNum(deptBalanceVo.getPageNum());
- pageVo.setPageSize(deptBalanceVo.getPageSize());
- SysUser sysUserQuery = new SysUser();
- sysUserQuery.setDeptId(deptBalanceVo.getDeptId());
- List<SysUserVO> listByDeptIdUser = this.sysUserService.findListByDeptIdNew(sysUserQuery);
- List<String> userListDept = listByDeptIdUser.stream().map(SysUserVO::getId).collect(Collectors.toList());
- if (userListDept.isEmpty()) {
- userListDept.add("0");
- }
- deptBalanceVo.setUserIdList(userListDept);
- IPage<SysPartnerConsoleDto> sysPartnersPage = sysPartnerMapper.queryPage(page, deptBalanceVo);
- List<SysPartnerConsoleDto> sysPartners = sysPartnersPage.getRecords();
- for (SysPartnerConsoleDto item : sysPartners) {
- BigDecimal allTotalIncome = BigDecimal.ZERO; // 总保费
- BigDecimal allDeptManagementFee = BigDecimal.ZERO;//机构管理费
- BigDecimal allWithdrawn = BigDecimal.ZERO;//已体现
- BigDecimal allNotWithdrawn = BigDecimal.ZERO;//未提现
- // 查询机构负责人
- List<SysAgencyLeader> deptLeader = sysAgencyLeaderService.lambdaQuery().eq(SysAgencyLeader::getSuggestId, item.getUserId()).list();
- // 机构负责人
- for (SysAgencyLeader itemLeader : deptLeader) {
- String deptId = itemLeader.getDeptId();
- if (StringUtils.isNotEmpty(deptId)) {
- String proportional = item.getProportional();
- HashMap<String, BigDecimal> orderAmount = deptBalanceMapper.getByDeptId(deptId);
- if (orderAmount != null && !orderAmount.isEmpty()) {
- allTotalIncome = this.calculateTotal(orderAmount.get("totalIncome").multiply(new BigDecimal(proportional).divide(new BigDecimal(100))), allTotalIncome, null); // 总保费
- allDeptManagementFee = this.calculateTotal(orderAmount.get("deptManagementFee"), allDeptManagementFee, null);//机构管理费
- }
- SysUser sysUser = new SysUser();
- sysUser.setDeptId(deptId);
- // 机构下的userId
- List<SysUserVO> listByDeptId = sysUserService.findListByDeptId(sysUser);
- List<String> institutionId = listByDeptId.stream().map(SysUserVO::getId).collect(Collectors.toList());
- // 已提现
- SysAmountAuditingVo sysAmountAuditingVo = new SysAmountAuditingVo();
- sysAmountAuditingVo.setUserIdList(institutionId);
- sysAmountAuditingVo.setAuditingStatus("3");
- BigDecimal withdrawn = sysAmountAuditingService.querySumAmount(sysAmountAuditingVo);
- allWithdrawn = this.calculateTotal(withdrawn, allWithdrawn, null);
- // 未提现
- sysAmountAuditingVo.setAuditingStatus("2");
- BigDecimal notWithdrawn = sysAmountAuditingService.querySumAmount(sysAmountAuditingVo);
- allNotWithdrawn = this.calculateTotal(notWithdrawn, allNotWithdrawn, null);
- }
- }
- item.setTotalIncome(allTotalIncome);
- item.setDeptManagementFee(allDeptManagementFee);
- item.setWithdrawn(allWithdrawn);
- item.setNotWithdrawn(allNotWithdrawn);
- }
- return HttpResult.ok(sysPartnersPage);
- } catch (Exception e) {
- e.printStackTrace();
- return HttpResult.error("查询异常");
- }
- }
- private List<String> recursion(String userId) {
- QueryWrapper<SysRelationPerson> objectQueryWrapper = new QueryWrapper<>();
- // 合伙人
- QueryWrapper<SysRelationPerson> sysRelationPerson = objectQueryWrapper.eq("suggest_id", userId)
- .eq("type", "0");
- List<SysRelationPerson> sysRelationPeople = this.sysRelationPersonMapper.selectList(sysRelationPerson);
- List<String> collect = sysRelationPeople.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
- collect.add(userId);
- return collect;
- }
- private BigDecimal calculateTotal(BigDecimal value1, BigDecimal value2, BigDecimal value3) {
- BigDecimal total = BigDecimal.ZERO;
- if (value1 != null) {
- total = total.add(value1);
- }
- if (value2 != null) {
- total = total.add(value2);
- }
- if (value3 != null) {
- total = total.add(value3);
- }
- return total;
- }
- /**
- * @version
- * @author: whp
- * @Date: 2024/08/26
- * @Description: 机构树形
- */
- @Override
- public List<SysPartnerConsoleDto> getTreeDeptUser(PartnerBalanceVo deptBalanceVo) {
- // 所有最上级合伙人
- List<SysPartnerConsoleDto> result = sysPartnerMapper.getTreeDeptUser(deptBalanceVo);
- // 合伙人的下级
- for (SysPartnerConsoleDto item : result) {
- this.treeRecursion(item);
- }
- return result;
- }
- private void treeRecursion(SysPartnerConsoleDto item) {
- String userId = item.getUserId();
- if (StringUtils.isNotEmpty(userId)) {
- // 合伙人
- SysPartnerConsoleDto sysPartnerConsoleDto = new SysPartnerConsoleDto();
- sysPartnerConsoleDto.setUserId(userId);
- sysPartnerConsoleDto.setType("0");
- List<SysPartnerConsoleDto> sysPartnerList = this.sysRelationPersonMapper.getBySuggestId(sysPartnerConsoleDto);
- item.setChildrenList(sysPartnerList);
- // 机构负责人
- sysPartnerConsoleDto.setType("1");
- List<SysPartnerConsoleDto> sysHeadList = this.sysRelationPersonMapper.getBySuggestId(sysPartnerConsoleDto);
- List<SysPartnerConsoleDto> childrenList = item.getChildrenList();
- childrenList.addAll(sysHeadList);
- if (!sysPartnerList.isEmpty()) {
- for (SysPartnerConsoleDto sysPartnerItem : sysPartnerList) {
- this.treeRecursion(sysPartnerItem);
- }
- }
- }
- }
- /**
- * @version
- * @author: whp
- * @Date: 2024/08/26
- * @Description: 钱包代理人
- */
- @Override
- public IPage<SysPartnerConsoleDto> getWalletAgent(DeptBalanceVo deptBalanceVo) {
- PageVo<SysPartnerConsoleDto> pageVo = new PageVo<>();
- Page page = new Page(deptBalanceVo.getPageNum(), deptBalanceVo.getPageSize());
- pageVo.setPageNum(deptBalanceVo.getPageNum());
- pageVo.setPageSize(deptBalanceVo.getPageSize());
- IPage<SysPartnerConsoleDto> sysUserListPage = deptBalanceMapper.getWalletAgent(page, deptBalanceVo);
- List<SysPartnerConsoleDto> records = sysUserListPage.getRecords();
- if (!records.isEmpty()) {
- for (SysPartnerConsoleDto record : records) {
- String userId = record.getUserId();
- HashMap<String, BigDecimal> orderAmount = deptBalanceMapper.getWalletAgentAmount(userId);
- // 总金额
- if (orderAmount != null && !orderAmount.isEmpty()) {
- record.setTotalIncome(orderAmount.get("totalIncome"));
- }
- // 已提现
- BigDecimal ysTXAmount= insFeeOrderNewService.findMyAmountYTXmount(record.getUserId(),"3");
- // 未提现
- MySumAmountQueryDto mySumAmountQueryDto = new MySumAmountQueryDto();
- mySumAmountQueryDto.setAuditstatus("1");
- SysUserAccount sysUserAccountEntity = sysUserAccountService.getById(record.getUserId());
- BigDecimal ssKTAmount =BigDecimal.ZERO;
- BigDecimal txzTXAmount= insFeeOrderNewService.findMyAmountYTXmount(mySumAmountQueryDto.getUserId(),"2");
- if(sysUserAccountEntity!=null){
- ssKTAmount = sysUserAccountEntity.getSumAmount()==null?BigDecimal.ZERO: sysUserAccountEntity.getSumAmount();
- }
- BigDecimal sumAmount=ysTXAmount.add(ssKTAmount).add(txzTXAmount);
- record.setWithdrawn(ysTXAmount);
- record.setNotWithdrawn(ssKTAmount);
- record.setTotalIncome(sumAmount);
- }
- }
- return sysUserListPage;
- }
- }
|