|
@@ -15,6 +15,7 @@ import com.ydtech.modules.admin.model.dto.TeamInformationDto;
|
|
|
import com.ydtech.modules.admin.model.dto.TeamUserInfoDto;
|
|
import com.ydtech.modules.admin.model.dto.TeamUserInfoDto;
|
|
|
import com.ydtech.modules.admin.model.vo.*;
|
|
import com.ydtech.modules.admin.model.vo.*;
|
|
|
import com.ydtech.modules.admin.service.SysAgencyLeaderService;
|
|
import com.ydtech.modules.admin.service.SysAgencyLeaderService;
|
|
|
|
|
+import com.ydtech.modules.admin.service.SysDeptService;
|
|
|
import com.ydtech.modules.admin.service.SysPartnerService;
|
|
import com.ydtech.modules.admin.service.SysPartnerService;
|
|
|
import com.ydtech.modules.base.controller.BaseController;
|
|
import com.ydtech.modules.base.controller.BaseController;
|
|
|
import com.ydtech.modules.order.dao.InsAreaCompanyMapper;
|
|
import com.ydtech.modules.order.dao.InsAreaCompanyMapper;
|
|
@@ -46,6 +47,8 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
|
|
|
|
|
|
|
|
@Resource
|
|
@Resource
|
|
|
private SysDeptMapper sysDeptMapper;
|
|
private SysDeptMapper sysDeptMapper;
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private SysDeptService sysDeptService;
|
|
|
|
|
|
|
|
@Resource
|
|
@Resource
|
|
|
private SysUserMapper sysUserMapper;
|
|
private SysUserMapper sysUserMapper;
|
|
@@ -751,6 +754,222 @@ public class SysAgencyLeaderServiceImpl extends ServiceImpl<SysAgencyLeaderMappe
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public BasePageResult<TeamInformation> queryTeamInfoPage(TeamInformationDto teamInformationDto) {
|
|
|
|
|
+ String userId = BaseController.getUser().getId();
|
|
|
|
|
+ List<TeamInformation> informationList = new ArrayList<>();
|
|
|
|
|
+ //合伙人
|
|
|
|
|
+ boolean c = sysPartnerService.checkPartner(userId);
|
|
|
|
|
+ if (c) {
|
|
|
|
|
+ //查询所有推荐的机构负责人核算总保费
|
|
|
|
|
+ List<SysRelationPerson> sysRelationPeople = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
|
|
|
|
|
+ .eq(SysRelationPerson::getSuggestId, userId).eq(SysRelationPerson::getType, 1));
|
|
|
|
|
+ if (sysRelationPeople.size() > 0) {
|
|
|
|
|
+ //总保费
|
|
|
|
|
+ BigDecimal bigDecimal = new BigDecimal("0.00");
|
|
|
|
|
+ //获取所有推荐的机构负责人id
|
|
|
|
|
+ List<String> agencyLeaderIds = sysRelationPeople.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
|
|
|
|
|
+ for (String agencyLeaderId : agencyLeaderIds) {
|
|
|
|
|
+ //获取机构负责人信息
|
|
|
|
|
+ SysAgencyLeader sysAgencyLeaders = sysAgencyLeaderMapper.selectOne(new LambdaQueryWrapper<SysAgencyLeader>()
|
|
|
|
|
+ .in(SysAgencyLeader::getUserId, agencyLeaderId)
|
|
|
|
|
+ .eq(SysAgencyLeader::getDelFlag, 1));
|
|
|
|
|
+ String[] split = sysAgencyLeaders.getSource().split(",");
|
|
|
|
|
+ //根据当前机构id查询出下面的团队,条件:机构来源相同,机构等级为null的团队
|
|
|
|
|
+ List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
|
|
|
|
|
+ .likeRight(SysDept::getId, sysAgencyLeaders.getDeptId())
|
|
|
|
|
+ .isNull(SysDept::getComlevel)
|
|
|
|
|
+ .eq(SysDept::getDelFlag, 0)
|
|
|
|
|
+ .in(SysDept::getManagementSource, split)
|
|
|
|
|
+ .like(StringUtils.isNotEmpty(teamInformationDto.getDeptName()),SysDept::getName,teamInformationDto.getDeptName()));
|
|
|
|
|
+
|
|
|
|
|
+ if (sysDeptList.size() > 0) {
|
|
|
|
|
+ for (SysDept sysDept : sysDeptList) {
|
|
|
|
|
+ TeamInformation teamInformation = new TeamInformation();
|
|
|
|
|
+ teamInformation.setDeptId(sysDept.getId());
|
|
|
|
|
+ teamInformation.setDeptName(sysDept.getName());
|
|
|
|
|
+ List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
|
|
|
|
|
+ .likeRight(SysUser::getId, sysDept.getId())
|
|
|
|
|
+ .eq(SysUser::getStatus, 1));
|
|
|
|
|
+ teamInformation.setDeptManNum(sysUsers.size());
|
|
|
|
|
+ List<InsOrders> insOrderList;
|
|
|
|
|
+ //筛选订单,选择时间
|
|
|
|
|
+ Date updateTime = sysAgencyLeaders.getUpdateTime();
|
|
|
|
|
+ if (updateTime == null) {
|
|
|
|
|
+ //机构下所有订单
|
|
|
|
|
+ insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
|
|
|
|
|
+ .likeRight(InsOrders::getDeptid, sysDept.getId())
|
|
|
|
|
+ .ge(InsOrders::getCreatetime, sysAgencyLeaders.getCreateTime())
|
|
|
|
|
+ .ge(StringUtils.isNotEmpty(teamInformationDto.getBeginTime()), InsOrders::getCreatetime, teamInformationDto.getBeginTime())
|
|
|
|
|
+ .le(StringUtils.isNotEmpty(teamInformationDto.getEndTime()), InsOrders::getCreatetime, teamInformationDto.getEndTime()));
|
|
|
|
|
+ teamInformation.setStartTime(sysAgencyLeaders.getCreateTime());
|
|
|
|
|
+ } else {
|
|
|
|
|
+ insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
|
|
|
|
|
+ .likeRight(InsOrders::getDeptid, sysDept.getId())
|
|
|
|
|
+ .ge(InsOrders::getCreatetime, updateTime)
|
|
|
|
|
+ .ge(StringUtils.isNotEmpty(teamInformationDto.getBeginTime()), InsOrders::getCreatetime, teamInformationDto.getBeginTime())
|
|
|
|
|
+ .le(StringUtils.isNotEmpty(teamInformationDto.getEndTime()), InsOrders::getCreatetime, teamInformationDto.getEndTime()));
|
|
|
|
|
+ teamInformation.setStartTime(updateTime);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (insOrderList.size() > 0) {
|
|
|
|
|
+ for (InsOrders insOrders : insOrderList) {
|
|
|
|
|
+ //查询订单下的所有子订单
|
|
|
|
|
+ List<InsAreaCompany> insAreaCompanies = insAreaCompanyMapper.selectList(new LambdaQueryWrapper<InsAreaCompany>()
|
|
|
|
|
+ .eq(InsAreaCompany::getOrderno, insOrders.getOrderno())
|
|
|
|
|
+ .eq(InsAreaCompany::getOrderstatus, 3));
|
|
|
|
|
+ if (insAreaCompanies.size() > 0) {
|
|
|
|
|
+ for (InsAreaCompany insAreaCompany : insAreaCompanies) {
|
|
|
|
|
+ //累加每一个子订单的交强险费用+商业险费用+驾意险费用
|
|
|
|
|
+ bigDecimal = bigDecimal.add(insAreaCompany.getJqpremium()).add(insAreaCompany.getSypremium()).add(insAreaCompany.getJypremium());
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ teamInformation.setSumpremium(bigDecimal);
|
|
|
|
|
+ int num = 0;
|
|
|
|
|
+ // 查团队有几人出单 :子订单中userid相等同时在 子订单表中状态为3已承保才为出单
|
|
|
|
|
+ List<String> userIdList = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList());
|
|
|
|
|
+ for (String s : userIdList) {
|
|
|
|
|
+ List<InsOrders> collect = insOrderList.stream().filter(InsOrders -> InsOrders.getUserid().equals(s)).collect(Collectors.toList());
|
|
|
|
|
+ if (collect.size() > 0) {
|
|
|
|
|
+ InsOrders insOrders = collect.get(0);
|
|
|
|
|
+ List<InsAreaCompany> insAreaCompanies1 = insAreaCompanyMapper.selectList(new LambdaQueryWrapper<InsAreaCompany>()
|
|
|
|
|
+ .eq(InsAreaCompany::getOrderno, insOrders.getOrderno())
|
|
|
|
|
+ .eq(InsAreaCompany::getOrderstatus, 3));
|
|
|
|
|
+ if (insAreaCompanies1.size() > 0) {
|
|
|
|
|
+ num++;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ teamInformation.setOrderManNum(num);
|
|
|
|
|
+ informationList.add(teamInformation);
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ int total = informationList.size();
|
|
|
|
|
+ double v = (double) total / 10;
|
|
|
|
|
+ long pages = Math.round(v);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ int fromIndex = (teamInformationDto.getPageNum() - 1) * teamInformationDto.getPageSize();
|
|
|
|
|
+ int toIndex = Math.min(fromIndex + teamInformationDto.getPageSize(), informationList.size());
|
|
|
|
|
+
|
|
|
|
|
+ if (fromIndex > informationList.size() || fromIndex < 0) {
|
|
|
|
|
+ return new BasePageResult<>(teamInformationDto.getPageNum(), teamInformationDto.getPageSize(), total, pages,
|
|
|
|
|
+ new ArrayList<>()); // 如果页码超出范围,返回空列表
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ List<TeamInformation> list = informationList.subList(fromIndex, toIndex);
|
|
|
|
|
+
|
|
|
|
|
+ return new BasePageResult<>(teamInformationDto.getPageNum(), teamInformationDto.getPageSize(), total, pages,
|
|
|
|
|
+ list);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ //校验当前用户是否为机构负责人
|
|
|
|
|
+ boolean b = this.checkUserId(userId);
|
|
|
|
|
+ if (b) {
|
|
|
|
|
+ //机构负责人查询机构下的团队
|
|
|
|
|
+ SysAgencyLeader sysAgencyLeaders = sysAgencyLeaderMapper.selectOne(new LambdaQueryWrapper<SysAgencyLeader>().eq(SysAgencyLeader::getUserId, userId)
|
|
|
|
|
+ .eq(SysAgencyLeader::getDelFlag, 1));
|
|
|
|
|
+ String[] split = sysAgencyLeaders.getSource().split(",");
|
|
|
|
|
+ //根据当前机构id查询出下面的团队,条件:机构来源相同,机构等级为null的团队
|
|
|
|
|
+// List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>().likeRight(SysDept::getId, sysAgencyLeaders.getDeptId())
|
|
|
|
|
+// .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0).in(SysDept::getManagementSource, split)
|
|
|
|
|
+// .like(StringUtils.isNotEmpty(teamInformationDto.getDeptName()),SysDept::getName,teamInformationDto.getDeptName()));
|
|
|
|
|
+
|
|
|
|
|
+ Page<SysDept> page = new Page<>(teamInformationDto.getPageNum(), teamInformationDto.getPageSize());
|
|
|
|
|
+ LambdaQueryWrapper<SysDept> wrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ wrapper.likeRight(SysDept::getId, sysAgencyLeaders.getDeptId())
|
|
|
|
|
+ .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0).in(SysDept::getManagementSource, split)
|
|
|
|
|
+ .like(StringUtils.isNotEmpty(teamInformationDto.getDeptName()),SysDept::getName,teamInformationDto.getDeptName());
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ Page<SysDept> insOrdersPage =sysDeptService.page(page, wrapper);
|
|
|
|
|
+
|
|
|
|
|
+ List<SysDept> sysDeptList = insOrdersPage.getRecords();
|
|
|
|
|
+
|
|
|
|
|
+ if (sysDeptList.size() > 0) {
|
|
|
|
|
+ //总保费
|
|
|
|
|
+ BigDecimal bigDecimal = new BigDecimal("0.00");
|
|
|
|
|
+ for (SysDept sysDept : sysDeptList) {
|
|
|
|
|
+ TeamInformation teamInformation = new TeamInformation();
|
|
|
|
|
+ teamInformation.setDeptId(sysDept.getId());
|
|
|
|
|
+ teamInformation.setDeptName(sysDept.getName());
|
|
|
|
|
+ List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>().likeRight(SysUser::getId, sysDept.getId()).eq(SysUser::getStatus, 1));
|
|
|
|
|
+ teamInformation.setDeptManNum(sysUsers.size());
|
|
|
|
|
+ List<InsOrders> insOrderList;
|
|
|
|
|
+ //筛选订单,选择时间
|
|
|
|
|
+ Date updateTime = sysAgencyLeaders.getUpdateTime();
|
|
|
|
|
+ if (updateTime == null) {
|
|
|
|
|
+ //机构下所有订单
|
|
|
|
|
+ insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
|
|
|
|
|
+ .likeRight(InsOrders::getDeptid, sysDept.getId())
|
|
|
|
|
+ .ge(InsOrders::getCreatetime, sysAgencyLeaders.getCreateTime())
|
|
|
|
|
+ .ge(StringUtils.isNotEmpty(teamInformationDto.getBeginTime()),InsOrders::getCreatetime,teamInformationDto.getBeginTime())
|
|
|
|
|
+ .le(StringUtils.isNotEmpty(teamInformationDto.getEndTime()),InsOrders::getCreatetime,teamInformationDto.getEndTime()));
|
|
|
|
|
+ teamInformation.setStartTime(sysAgencyLeaders.getCreateTime());
|
|
|
|
|
+
|
|
|
|
|
+ } else {
|
|
|
|
|
+ insOrderList = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
|
|
|
|
|
+ .likeRight(InsOrders::getDeptid, sysDept.getId())
|
|
|
|
|
+ .ge(InsOrders::getCreatetime, updateTime)
|
|
|
|
|
+ .ge(StringUtils.isNotEmpty(teamInformationDto.getBeginTime()),InsOrders::getCreatetime,teamInformationDto.getBeginTime())
|
|
|
|
|
+ .le(StringUtils.isNotEmpty(teamInformationDto.getEndTime()),InsOrders::getCreatetime,teamInformationDto.getEndTime()));
|
|
|
|
|
+ teamInformation.setStartTime(updateTime);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (insOrderList.size() > 0) {
|
|
|
|
|
+ for (InsOrders insOrders : insOrderList) {
|
|
|
|
|
+ //查询订单下的所有子订单
|
|
|
|
|
+ List<InsAreaCompany> insAreaCompanies = insAreaCompanyMapper.selectList(new LambdaQueryWrapper<InsAreaCompany>().eq(InsAreaCompany::getOrderno, insOrders.getOrderno())
|
|
|
|
|
+ .eq(InsAreaCompany::getOrderstatus, 3));
|
|
|
|
|
+ if (insAreaCompanies.size() > 0) {
|
|
|
|
|
+ for (InsAreaCompany insAreaCompany : insAreaCompanies) {
|
|
|
|
|
+ //累加每一个子订单的交强险费用+商业险费用+驾意险费用
|
|
|
|
|
+ bigDecimal = bigDecimal.add(insAreaCompany.getJqpremium()).add(insAreaCompany.getSypremium()).add(insAreaCompany.getJypremium());
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ teamInformation.setSumpremium(bigDecimal);
|
|
|
|
|
+ int num = 0;
|
|
|
|
|
+ // 查团队有几人出单 :订单表中userid相等同时在 子订单表中状态为3已承保才为出单
|
|
|
|
|
+ List<String> userIdList = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList());
|
|
|
|
|
+ for (String s : userIdList) {
|
|
|
|
|
+ List<InsOrders> collect = insOrderList.stream().filter(InsOrders -> InsOrders.getUserid().equals(s)).collect(Collectors.toList());
|
|
|
|
|
+ if (collect.size() > 0) {
|
|
|
|
|
+ InsOrders insOrders = collect.get(0);
|
|
|
|
|
+ List<InsAreaCompany> insAreaCompanies1 = insAreaCompanyMapper.selectList(new LambdaQueryWrapper<InsAreaCompany>().eq(InsAreaCompany::getOrderno, insOrders.getOrderno())
|
|
|
|
|
+ .eq(InsAreaCompany::getOrderstatus, 3));
|
|
|
|
|
+ if (insAreaCompanies1.size() > 0) {
|
|
|
|
|
+ num++;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ teamInformation.setOrderManNum(num);
|
|
|
|
|
+ informationList.add(teamInformation);
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ return new BasePageResult<>(teamInformationDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
|
|
|
|
|
+ informationList);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ return new BasePageResult<>(teamInformationDto.getPageNum(), teamInformationDto.getPageSize(), 0, 0,
|
|
|
|
|
+ informationList);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public List<TeamUserInfoVo> queryTeamUser(TeamUserInfoDto teamUserInfoDto) {
|
|
public List<TeamUserInfoVo> queryTeamUser(TeamUserInfoDto teamUserInfoDto) {
|
|
|
List<TeamUserInfoVo> teamUserInfoVoList = new ArrayList<>();
|
|
List<TeamUserInfoVo> teamUserInfoVoList = new ArrayList<>();
|