|
@@ -1,5 +1,7 @@
|
|
|
package com.ydtech.modules.admin.service.impl;
|
|
package com.ydtech.modules.admin.service.impl;
|
|
|
|
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.github.pagehelper.PageHelper;
|
|
import com.github.pagehelper.PageHelper;
|
|
@@ -8,8 +10,10 @@ import com.ydtech.core.page.HttpResult;
|
|
|
import com.ydtech.core.page.PageRequest;
|
|
import com.ydtech.core.page.PageRequest;
|
|
|
import com.ydtech.exception.SystemException;
|
|
import com.ydtech.exception.SystemException;
|
|
|
import com.ydtech.modules.admin.dao.SysAmountAuditingMapper;
|
|
import com.ydtech.modules.admin.dao.SysAmountAuditingMapper;
|
|
|
|
|
+import com.ydtech.modules.admin.dao.SysUserMapper;
|
|
|
import com.ydtech.modules.admin.dao.TaskStatisticsMapper;
|
|
import com.ydtech.modules.admin.dao.TaskStatisticsMapper;
|
|
|
import com.ydtech.modules.admin.model.SysDept;
|
|
import com.ydtech.modules.admin.model.SysDept;
|
|
|
|
|
+import com.ydtech.modules.admin.model.SysUser;
|
|
|
import com.ydtech.modules.admin.model.dto.InsuranceCompanyExcel;
|
|
import com.ydtech.modules.admin.model.dto.InsuranceCompanyExcel;
|
|
|
import com.ydtech.modules.admin.model.dto.TaskStatisticsDto;
|
|
import com.ydtech.modules.admin.model.dto.TaskStatisticsDto;
|
|
|
import com.ydtech.modules.admin.model.dto.TaskStatisticsExcel;
|
|
import com.ydtech.modules.admin.model.dto.TaskStatisticsExcel;
|
|
@@ -40,6 +44,8 @@ import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
+import static com.baomidou.mybatisplus.extension.toolkit.Db.list;
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* @description: 任务统计
|
|
* @description: 任务统计
|
|
|
* @author: whp
|
|
* @author: whp
|
|
@@ -61,6 +67,8 @@ public class TaskStatisticsServiceImpl implements TaskStatisticsService {
|
|
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private SysDeptService sysDeptService;
|
|
private SysDeptService sysDeptService;
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private SysUserMapper sysUserMapper;
|
|
|
|
|
|
|
|
|
|
|
|
|
@Value("${upload.file.path}")
|
|
@Value("${upload.file.path}")
|
|
@@ -210,6 +218,7 @@ public class TaskStatisticsServiceImpl implements TaskStatisticsService {
|
|
|
Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
|
|
Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
|
|
|
pageVo.setPageNum(taskStatisticsVo.getPageNum());
|
|
pageVo.setPageNum(taskStatisticsVo.getPageNum());
|
|
|
pageVo.setPageSize(taskStatisticsVo.getPageSize());
|
|
pageVo.setPageSize(taskStatisticsVo.getPageSize());
|
|
|
|
|
+
|
|
|
IPage<TaskStatisticsDto> list = this.insAreaCompanyMapper.getBusinessData(page,taskStatisticsVo);
|
|
IPage<TaskStatisticsDto> list = this.insAreaCompanyMapper.getBusinessData(page,taskStatisticsVo);
|
|
|
return list;
|
|
return list;
|
|
|
}
|
|
}
|
|
@@ -291,6 +300,13 @@ public class TaskStatisticsServiceImpl implements TaskStatisticsService {
|
|
|
**/
|
|
**/
|
|
|
@Override
|
|
@Override
|
|
|
public IPage<BusinessAgentData> getBusinessAgentData(TaskStatisticsVo taskStatisticsVo) {
|
|
public IPage<BusinessAgentData> getBusinessAgentData(TaskStatisticsVo taskStatisticsVo) {
|
|
|
|
|
+ if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId())){
|
|
|
|
|
+ List<String> userIds=this.getNextLevel(taskStatisticsVo.getTreeUserId());
|
|
|
|
|
+ if(!userIds.isEmpty()){
|
|
|
|
|
+ taskStatisticsVo.setUserIds(userIds);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
|
|
PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
|
|
|
Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
|
|
Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
|
|
|
page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询
|
|
page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询
|
|
@@ -308,6 +324,62 @@ public class TaskStatisticsServiceImpl implements TaskStatisticsService {
|
|
|
return list;
|
|
return list;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param userId
|
|
|
|
|
+ * @return 获取该用户下级所有用户id
|
|
|
|
|
+ */
|
|
|
|
|
+ private List<String> getNextLevel(String userId) {
|
|
|
|
|
+
|
|
|
|
|
+ // 获取系统中的所有用户
|
|
|
|
|
+ LambdaQueryWrapper<SysUser> queryWrapperUser = new LambdaQueryWrapper<>();
|
|
|
|
|
+ queryWrapperUser.eq(SysUser :: getStatus,"1");
|
|
|
|
|
+ List<SysUser> users = this.sysUserMapper.selectList(queryWrapperUser);
|
|
|
|
|
+
|
|
|
|
|
+ // 创建查询包装器,用于查询指定用户ID的用
|
|
|
|
|
+ LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ queryWrapper.eq(SysUser::getId, userId);
|
|
|
|
|
+ // 查询指定用户ID的用户,即第一级下属
|
|
|
|
|
+ List<SysUser> usersLevel1 = this.sysUserMapper.selectList(queryWrapper);
|
|
|
|
|
+
|
|
|
|
|
+ // 用于存储所有下属的ID
|
|
|
|
|
+ List<String> strIds = new ArrayList<>();
|
|
|
|
|
+ // 递归获取第一级下属及其所有下属的ID
|
|
|
|
|
+ findChildren(usersLevel1, users, strIds);
|
|
|
|
|
+ return strIds;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param usersLevel1 即第一级下属
|
|
|
|
|
+ * @param users 所有用户
|
|
|
|
|
+ * @param strIds 用于存储所有下属的ID
|
|
|
|
|
+ */
|
|
|
|
|
+ private void findChildren(List<SysUser> SysUsers, List<SysUser> users, List<String> strIds) {
|
|
|
|
|
+ for (SysUser sysUser : SysUsers) {
|
|
|
|
|
+ List<SysUser> children = new ArrayList<>();
|
|
|
|
|
+ for (SysUser user : users) {
|
|
|
|
|
+ if (sysUser.getId() != null && sysUser.getId().equals(user.getLeaderId())) {
|
|
|
|
|
+ if (!exists(children, user)) {
|
|
|
|
|
+ children.add(user);
|
|
|
|
|
+ strIds.add(user.getId());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ sysUser.setChildren(children);
|
|
|
|
|
+ findChildren(children, users, strIds);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private boolean exists(List<SysUser> sysUsers, SysUser sysUser) {
|
|
|
|
|
+ boolean exist = false;
|
|
|
|
|
+ for (SysUser user : sysUsers) {
|
|
|
|
|
+ if (user.getId().equals(sysUser.getId())) {
|
|
|
|
|
+ exist = true;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return exist;
|
|
|
|
|
+ }
|
|
|
/**
|
|
/**
|
|
|
* @version
|
|
* @version
|
|
|
* @author: hxl
|
|
* @author: hxl
|
|
@@ -352,6 +424,14 @@ public class TaskStatisticsServiceImpl implements TaskStatisticsService {
|
|
|
taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
|
|
taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
|
|
|
taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
|
|
taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
|
|
|
|
|
|
|
|
|
|
+ if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeUserId())){
|
|
|
|
|
+ List<String> userIds=this.getNextLevel(taskStatisticsVo.getTreeUserId());
|
|
|
|
|
+ if(!userIds.isEmpty()){
|
|
|
|
|
+ taskStatisticsVo.setUserIds(userIds);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
BusinessAgentData result = this.taskStatisticsMapper.getBusinessAgentDataTotalAdd(taskStatisticsVo);
|
|
BusinessAgentData result = this.taskStatisticsMapper.getBusinessAgentDataTotalAdd(taskStatisticsVo);
|
|
|
|
|
|
|
|
BusinessAgentData allsumPremium = this.taskStatisticsMapper.getAllsumPremium(taskStatisticsVo);
|
|
BusinessAgentData allsumPremium = this.taskStatisticsMapper.getAllsumPremium(taskStatisticsVo);
|
|
@@ -360,7 +440,7 @@ public class TaskStatisticsServiceImpl implements TaskStatisticsService {
|
|
|
BigDecimal sumPremium = allsumPremium.getSumPremium().compareTo(BigDecimal.ZERO) > 0 ? allsumPremium.getSumPremium() : BigDecimal.ZERO;
|
|
BigDecimal sumPremium = allsumPremium.getSumPremium().compareTo(BigDecimal.ZERO) > 0 ? allsumPremium.getSumPremium() : BigDecimal.ZERO;
|
|
|
BigDecimal resultSumPremium = result.getSumPremium().compareTo(BigDecimal.ZERO) > 0 ? result.getSumPremium() : BigDecimal.ZERO;
|
|
BigDecimal resultSumPremium = result.getSumPremium().compareTo(BigDecimal.ZERO) > 0 ? result.getSumPremium() : BigDecimal.ZERO;
|
|
|
if (!sumPremium.equals(BigDecimal.ZERO)) {
|
|
if (!sumPremium.equals(BigDecimal.ZERO)) {
|
|
|
- result.setSumPremiumProportion(resultSumPremium.divide(sumPremium).setScale(2, RoundingMode.DOWN).multiply(new BigDecimal("100")));
|
|
|
|
|
|
|
+ result.setSumPremiumProportion(resultSumPremium.divide(sumPremium).setScale(2, RoundingMode.DOWN));
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
return result;
|
|
return result;
|
|
@@ -398,4 +478,24 @@ public class TaskStatisticsServiceImpl implements TaskStatisticsService {
|
|
|
return HttpResult.ok("", uploadUrl + "excel/" + fileName);
|
|
return HttpResult.ok("", uploadUrl + "excel/" + fileName);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @description: 任控制台-业务数据-代理人-详情
|
|
|
|
|
+ * @author: whp
|
|
|
|
|
+ * @date: 2024/09/10
|
|
|
|
|
+ **/
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public IPage<BusinessAgentData> getBusinessAgentDataDetails(TaskStatisticsVo taskStatisticsVo) {
|
|
|
|
|
+ HashMap<String, String> dateMapByType = getDateMapByType(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
|
|
|
|
|
+ taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
|
|
|
|
|
+ taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
|
|
|
|
|
+ PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
|
|
|
|
|
+ Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
|
|
|
|
|
+ page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询
|
|
|
|
|
+ pageVo.setPageNum(taskStatisticsVo.getPageNum());
|
|
|
|
|
+ pageVo.setPageSize(taskStatisticsVo.getPageSize());
|
|
|
|
|
+ IPage<BusinessAgentData> list = this.taskStatisticsMapper.getBusinessAgentDataDetails(page, taskStatisticsVo);
|
|
|
|
|
+ Long total = this.taskStatisticsMapper.getBusinessAgentDataDetailsAdd(taskStatisticsVo);
|
|
|
|
|
+ list.setTotal(total);
|
|
|
|
|
+ return list;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|