DeptBalanceServiceImpl.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. package com.ydtech.modules.admin.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  6. import com.ydtech.core.page.HttpResult;
  7. import com.ydtech.modules.admin.dao.DeptBalanceMapper;
  8. import com.ydtech.modules.admin.dao.SysPartnerMapper;
  9. import com.ydtech.modules.admin.dao.SysRelationPersonMapper;
  10. import com.ydtech.modules.admin.model.SysAgencyLeader;
  11. import com.ydtech.modules.admin.model.SysPartner;
  12. import com.ydtech.modules.admin.model.SysRelationPerson;
  13. import com.ydtech.modules.admin.model.SysUser;
  14. import com.ydtech.modules.admin.model.dto.DeptBalanceDto;
  15. import com.ydtech.modules.admin.model.dto.MySumAmountQueryDto;
  16. import com.ydtech.modules.admin.model.dto.SysPartnerConsoleDto;
  17. import com.ydtech.modules.admin.model.po.SysUserAccount;
  18. import com.ydtech.modules.admin.model.vo.DeptBalanceVo;
  19. import com.ydtech.modules.admin.model.vo.PartnerBalanceVo;
  20. import com.ydtech.modules.admin.model.vo.SysAmountAuditingVo;
  21. import com.ydtech.modules.admin.model.vo.SysUserVO;
  22. import com.ydtech.modules.admin.service.*;
  23. import com.ydtech.modules.base.model.vo.PageVo;
  24. import com.ydtech.modules.order.service.InsOrdersService;
  25. import com.ydtech.modules.protocols.service.InsFeeOrderNewService;
  26. import com.ydtech.utils.StringUtils;
  27. import org.springframework.beans.factory.annotation.Autowired;
  28. import org.springframework.stereotype.Service;
  29. import java.math.BigDecimal;
  30. import java.util.*;
  31. import java.util.stream.Collectors;
  32. @Service
  33. public class DeptBalanceServiceImpl implements DeptBalanceService {
  34. @Autowired
  35. private SysAgencyLeaderService sysAgencyLeaderService;
  36. @Autowired
  37. private DeptBalanceMapper deptBalanceMapper;
  38. @Autowired
  39. private SysRelationPersonMapper sysRelationPersonMapper;
  40. @Autowired
  41. private SysPartnerMapper sysPartnerMapper;
  42. @Autowired
  43. private InsOrdersService insOrdersService;
  44. @Autowired
  45. private SysUserService sysUserService;
  46. @Autowired
  47. private SysAmountAuditingService sysAmountAuditingService;
  48. @Autowired
  49. private InsFeeOrderNewService insFeeOrderNewService;
  50. @Autowired
  51. private SysUserAccountService sysUserAccountService;
  52. /**
  53. * @version
  54. * @author: whp
  55. * @Date: 2024/08/14 9:04
  56. * @Description: 机构负责人统计
  57. */
  58. @Override
  59. public HttpResult<IPage<DeptBalanceDto>> queryDeptLeaderStatistics(DeptBalanceVo deptBalanceVo) {
  60. try {
  61. PageVo<DeptBalanceDto> pageVo = new PageVo<>();
  62. Page page = new Page(deptBalanceVo.getPageNum(), deptBalanceVo.getPageSize());
  63. pageVo.setPageNum(deptBalanceVo.getPageNum());
  64. pageVo.setPageSize(deptBalanceVo.getPageSize());
  65. IPage<DeptBalanceDto> sysUserListPage = deptBalanceMapper.queryDeptLeaderStatistics(page, deptBalanceVo);
  66. return HttpResult.ok(sysUserListPage);
  67. } catch (Exception e) {
  68. e.printStackTrace();
  69. return HttpResult.error("查询异常");
  70. }
  71. }
  72. /**
  73. * @version
  74. * @author: whp
  75. * @Date: 2024/08/23 9:04
  76. * @Description: 合伙人统计
  77. */
  78. @Override
  79. public HttpResult<IPage<SysPartnerConsoleDto>> queryPartnerStatistics(DeptBalanceVo deptBalanceVo) {
  80. try {
  81. PageVo<SysPartnerConsoleDto> pageVo = new PageVo<>();
  82. Page page = new Page(deptBalanceVo.getPageNum(), deptBalanceVo.getPageSize());
  83. pageVo.setPageNum(deptBalanceVo.getPageNum());
  84. pageVo.setPageSize(deptBalanceVo.getPageSize());
  85. SysUser sysUserQuery = new SysUser();
  86. sysUserQuery.setDeptId(deptBalanceVo.getDeptId());
  87. List<SysUserVO> listByDeptIdUser = this.sysUserService.findListByDeptIdNew(sysUserQuery);
  88. List<String> userListDept = listByDeptIdUser.stream().map(SysUserVO::getId).collect(Collectors.toList());
  89. if (userListDept.isEmpty()) {
  90. userListDept.add("0");
  91. }
  92. deptBalanceVo.setUserIdList(userListDept);
  93. IPage<SysPartnerConsoleDto> sysPartnersPage = sysPartnerMapper.queryPage(page, deptBalanceVo);
  94. List<SysPartnerConsoleDto> sysPartners = sysPartnersPage.getRecords();
  95. for (SysPartnerConsoleDto item : sysPartners) {
  96. BigDecimal allTotalIncome = BigDecimal.ZERO; // 总保费
  97. BigDecimal allDeptManagementFee = BigDecimal.ZERO;//机构管理费
  98. BigDecimal allWithdrawn = BigDecimal.ZERO;//已体现
  99. BigDecimal allNotWithdrawn = BigDecimal.ZERO;//未提现
  100. // 查询机构负责人
  101. List<SysAgencyLeader> deptLeader = sysAgencyLeaderService.lambdaQuery().eq(SysAgencyLeader::getSuggestId, item.getUserId()).list();
  102. // 机构负责人
  103. for (SysAgencyLeader itemLeader : deptLeader) {
  104. String deptId = itemLeader.getDeptId();
  105. if (StringUtils.isNotEmpty(deptId)) {
  106. String proportional = item.getProportional();
  107. HashMap<String, BigDecimal> orderAmount = deptBalanceMapper.getByDeptId(deptId);
  108. if (orderAmount != null && !orderAmount.isEmpty()) {
  109. allTotalIncome = this.calculateTotal(orderAmount.get("totalIncome").multiply(new BigDecimal(proportional).divide(new BigDecimal(100))), allTotalIncome, null); // 总保费
  110. allDeptManagementFee = this.calculateTotal(orderAmount.get("deptManagementFee"), allDeptManagementFee, null);//机构管理费
  111. }
  112. SysUser sysUser = new SysUser();
  113. sysUser.setDeptId(deptId);
  114. // 机构下的userId
  115. List<SysUserVO> listByDeptId = sysUserService.findListByDeptId(sysUser);
  116. List<String> institutionId = listByDeptId.stream().map(SysUserVO::getId).collect(Collectors.toList());
  117. // 已提现
  118. SysAmountAuditingVo sysAmountAuditingVo = new SysAmountAuditingVo();
  119. sysAmountAuditingVo.setUserIdList(institutionId);
  120. sysAmountAuditingVo.setAuditingStatus("3");
  121. BigDecimal withdrawn = sysAmountAuditingService.querySumAmount(sysAmountAuditingVo);
  122. allWithdrawn = this.calculateTotal(withdrawn, allWithdrawn, null);
  123. // 未提现
  124. sysAmountAuditingVo.setAuditingStatus("2");
  125. BigDecimal notWithdrawn = sysAmountAuditingService.querySumAmount(sysAmountAuditingVo);
  126. allNotWithdrawn = this.calculateTotal(notWithdrawn, allNotWithdrawn, null);
  127. }
  128. }
  129. item.setTotalIncome(allTotalIncome);
  130. item.setDeptManagementFee(allDeptManagementFee);
  131. item.setWithdrawn(allWithdrawn);
  132. item.setNotWithdrawn(allNotWithdrawn);
  133. }
  134. return HttpResult.ok(sysPartnersPage);
  135. } catch (Exception e) {
  136. e.printStackTrace();
  137. return HttpResult.error("查询异常");
  138. }
  139. }
  140. private List<String> recursion(String userId) {
  141. QueryWrapper<SysRelationPerson> objectQueryWrapper = new QueryWrapper<>();
  142. // 合伙人
  143. QueryWrapper<SysRelationPerson> sysRelationPerson = objectQueryWrapper.eq("suggest_id", userId)
  144. .eq("type", "0");
  145. List<SysRelationPerson> sysRelationPeople = this.sysRelationPersonMapper.selectList(sysRelationPerson);
  146. List<String> collect = sysRelationPeople.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
  147. collect.add(userId);
  148. return collect;
  149. }
  150. private BigDecimal calculateTotal(BigDecimal value1, BigDecimal value2, BigDecimal value3) {
  151. BigDecimal total = BigDecimal.ZERO;
  152. if (value1 != null) {
  153. total = total.add(value1);
  154. }
  155. if (value2 != null) {
  156. total = total.add(value2);
  157. }
  158. if (value3 != null) {
  159. total = total.add(value3);
  160. }
  161. return total;
  162. }
  163. /**
  164. * @version
  165. * @author: whp
  166. * @Date: 2024/08/26
  167. * @Description: 机构树形
  168. */
  169. @Override
  170. public List<SysPartnerConsoleDto> getTreeDeptUser(PartnerBalanceVo deptBalanceVo) {
  171. // 所有最上级合伙人
  172. List<SysPartnerConsoleDto> result = sysPartnerMapper.getTreeDeptUser(deptBalanceVo);
  173. // 合伙人的下级
  174. for (SysPartnerConsoleDto item : result) {
  175. this.treeRecursion(item);
  176. }
  177. return result;
  178. }
  179. private void treeRecursion(SysPartnerConsoleDto item) {
  180. String userId = item.getUserId();
  181. if (StringUtils.isNotEmpty(userId)) {
  182. // 合伙人
  183. SysPartnerConsoleDto sysPartnerConsoleDto = new SysPartnerConsoleDto();
  184. sysPartnerConsoleDto.setUserId(userId);
  185. sysPartnerConsoleDto.setType("0");
  186. List<SysPartnerConsoleDto> sysPartnerList = this.sysRelationPersonMapper.getBySuggestId(sysPartnerConsoleDto);
  187. item.setChildrenList(sysPartnerList);
  188. // 机构负责人
  189. sysPartnerConsoleDto.setType("1");
  190. List<SysPartnerConsoleDto> sysHeadList = this.sysRelationPersonMapper.getBySuggestId(sysPartnerConsoleDto);
  191. List<SysPartnerConsoleDto> childrenList = item.getChildrenList();
  192. childrenList.addAll(sysHeadList);
  193. if (!sysPartnerList.isEmpty()) {
  194. for (SysPartnerConsoleDto sysPartnerItem : sysPartnerList) {
  195. this.treeRecursion(sysPartnerItem);
  196. }
  197. }
  198. }
  199. }
  200. /**
  201. * @version
  202. * @author: whp
  203. * @Date: 2024/08/26
  204. * @Description: 钱包代理人
  205. */
  206. @Override
  207. public IPage<SysPartnerConsoleDto> getWalletAgent(DeptBalanceVo deptBalanceVo) {
  208. PageVo<SysPartnerConsoleDto> pageVo = new PageVo<>();
  209. Page page = new Page(deptBalanceVo.getPageNum(), deptBalanceVo.getPageSize());
  210. pageVo.setPageNum(deptBalanceVo.getPageNum());
  211. pageVo.setPageSize(deptBalanceVo.getPageSize());
  212. IPage<SysPartnerConsoleDto> sysUserListPage = deptBalanceMapper.getWalletAgent(page, deptBalanceVo);
  213. List<SysPartnerConsoleDto> records = sysUserListPage.getRecords();
  214. if (!records.isEmpty()) {
  215. for (SysPartnerConsoleDto record : records) {
  216. String userId = record.getUserId();
  217. HashMap<String, BigDecimal> orderAmount = deptBalanceMapper.getWalletAgentAmount(userId);
  218. // 总金额
  219. if (orderAmount != null && !orderAmount.isEmpty()) {
  220. record.setTotalIncome(orderAmount.get("totalIncome"));
  221. }
  222. // 已提现
  223. BigDecimal ysTXAmount= insFeeOrderNewService.findMyAmountYTXmount(record.getUserId(),"3");
  224. // 未提现
  225. MySumAmountQueryDto mySumAmountQueryDto = new MySumAmountQueryDto();
  226. mySumAmountQueryDto.setAuditstatus("1");
  227. SysUserAccount sysUserAccountEntity = sysUserAccountService.getById(record.getUserId());
  228. BigDecimal ssKTAmount =BigDecimal.ZERO;
  229. BigDecimal txzTXAmount= insFeeOrderNewService.findMyAmountYTXmount(mySumAmountQueryDto.getUserId(),"2");
  230. if(sysUserAccountEntity!=null){
  231. ssKTAmount = sysUserAccountEntity.getSumAmount()==null?BigDecimal.ZERO: sysUserAccountEntity.getSumAmount();
  232. }
  233. BigDecimal sumAmount=ysTXAmount.add(ssKTAmount).add(txzTXAmount);
  234. record.setWithdrawn(ysTXAmount);
  235. record.setNotWithdrawn(ssKTAmount);
  236. record.setTotalIncome(sumAmount);
  237. }
  238. }
  239. return sysUserListPage;
  240. }
  241. }