人员合同数据饼图接口开发
人员成交数据转介绍接口开发
This commit is contained in:
parent
fd3f2d6654
commit
c146cf8d6a
@ -63,7 +63,7 @@ public class HomeController extends BaseController {
|
||||
}
|
||||
|
||||
/**
|
||||
* 首页大盘数据:人员合同金额统计
|
||||
* 首页大盘数据:人员成交数据列表
|
||||
* @param type 1本月 2上月 3本季度 4本年 5所有
|
||||
* @return
|
||||
*/
|
||||
@ -72,6 +72,27 @@ public class HomeController extends BaseController {
|
||||
public R<List> getUserContractAmounts(@RequestParam() Integer type, @RequestParam() Long deptId) {
|
||||
return R.ok(homeService.getUserContractAmountsByDeptId(type,deptId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 首页大盘数据:人员转介绍成交数据列表
|
||||
* @param type 1本月 2上月 3本季度 4本年 5所有
|
||||
* @return
|
||||
*/
|
||||
@SaCheckPermission("business:salary:list")
|
||||
@GetMapping("/getUserContractSourceAmounts")
|
||||
public R<Object> getUserContractSourceAmounts(@RequestParam() Integer type, @RequestParam() Long deptId){
|
||||
return R.ok(homeService.getUserContractSourceAmountsByDeptId(type,deptId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 首页大盘数据:人员成交数据饼图
|
||||
* @param type
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/getUserContractAndPayInfo")
|
||||
public R<Object> getUserContractAndPayInfo(@RequestParam() Integer type){
|
||||
return R.ok(homeService.getUserContractAndPayInfo(type));
|
||||
}
|
||||
/**
|
||||
* 首页大盘数据:各渠道成交(公司总数居)
|
||||
* @param type 1本月 2上月 3本季度 4本年 5所有
|
||||
|
@ -0,0 +1,47 @@
|
||||
package com.pusong.business.domain.vo.home;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
public class UserAmountInfoVo {
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
private String dateStr;
|
||||
/**
|
||||
* 用户名字
|
||||
*/
|
||||
private String nickName;
|
||||
/**
|
||||
* 合同数量
|
||||
*/
|
||||
private Integer contractNum=0;
|
||||
/**
|
||||
* 合同总金额
|
||||
*/
|
||||
private BigDecimal sumAmount=new BigDecimal(0);
|
||||
/**
|
||||
* 已支付总金额
|
||||
*/
|
||||
private BigDecimal payedSumAmount=new BigDecimal(0);
|
||||
/**
|
||||
* 未支付金额
|
||||
*/
|
||||
private BigDecimal unPaySumAmount=new BigDecimal(0);
|
||||
|
||||
public void addContractNum(){
|
||||
contractNum++;
|
||||
}
|
||||
public void addSumAmount(BigDecimal amount){
|
||||
if(amount==null){return;}
|
||||
sumAmount=sumAmount.add(amount);
|
||||
}
|
||||
public void addPayedSumAmount(BigDecimal amount){
|
||||
if(amount==null){return;}
|
||||
payedSumAmount=payedSumAmount.add(amount);
|
||||
}
|
||||
}
|
@ -26,8 +26,16 @@ public class UserContractAmountInfo {
|
||||
* 合同类型
|
||||
*/
|
||||
private String businessType;
|
||||
/**
|
||||
* 客户来源
|
||||
*/
|
||||
private String customSource;
|
||||
/**
|
||||
* 合同价格
|
||||
*/
|
||||
private BigDecimal contractAmount;
|
||||
/**
|
||||
* 已付款金额
|
||||
*/
|
||||
private BigDecimal payedMoney;
|
||||
}
|
||||
|
@ -20,6 +20,14 @@ public class UserContractAmountVo {
|
||||
* 与其他人合同金额的占比
|
||||
*/
|
||||
private String amountPer;
|
||||
/**
|
||||
* 转介绍合同数量
|
||||
*/
|
||||
private Integer jieShaoContractNum=0;
|
||||
/**
|
||||
* 转介绍合同金额占比
|
||||
*/
|
||||
private String jieShaoPer;
|
||||
/**
|
||||
* 用户所有合同总金额
|
||||
*/
|
||||
@ -40,6 +48,10 @@ public class UserContractAmountVo {
|
||||
* 其他类型合同总金额
|
||||
*/
|
||||
private BigDecimal otherAmount=new BigDecimal(0);
|
||||
/**
|
||||
* 转介绍的合同金额
|
||||
*/
|
||||
private BigDecimal jieShaoAmount=new BigDecimal(0);
|
||||
|
||||
public void addSumAmount(BigDecimal amount){
|
||||
sumAmount=sumAmount.add(amount);
|
||||
@ -56,4 +68,10 @@ public class UserContractAmountVo {
|
||||
public void addOtherAmount(BigDecimal amount) {
|
||||
otherAmount=otherAmount.add(amount);
|
||||
}
|
||||
public void addJieShaoAmount(BigDecimal amount) {
|
||||
jieShaoAmount = jieShaoAmount.add(amount);
|
||||
}
|
||||
public void addJieShaoContractNum() {
|
||||
jieShaoContractNum++;
|
||||
}
|
||||
}
|
||||
|
@ -45,7 +45,9 @@ public interface PsContractInfoMapper extends BaseMapperPlus<PsContractInfo, PsC
|
||||
List<PsSalaryContract> querySalaryListByCodes(@Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
|
||||
|
||||
List<Map<String,Object>> homePageReturnMoneyInfo(@Param("queryParam") Map<String, Object> queryParam);
|
||||
List<UserContractAmountInfo> getUserContractSourceAmountsByDeptId(@Param("queryParam") Map<String, Object> queryParam);
|
||||
List<UserContractAmountInfo> getUserContractTypeAmountsByDeptId(@Param("queryParam") Map<String, Object> queryParam);
|
||||
List<UserContractAmountInfo> getUserContractAndPayInfo(@Param("queryParam") Map<String, Object> queryParam);
|
||||
|
||||
|
||||
//首页查询各个渠道成交的合同
|
||||
|
@ -14,7 +14,9 @@ public interface HomeService {
|
||||
MakeAmountVo selectMakeAmount(Integer type);
|
||||
|
||||
ReturnMoneyInfoVo returnMoney(Integer type);
|
||||
Object getUserContractSourceAmountsByDeptId(Integer type,Long deptId);
|
||||
List getUserContractAmountsByDeptId(Integer type, Long deptId);
|
||||
Object getUserContractAndPayInfo(Integer type);
|
||||
/**
|
||||
* 首页大盘数据:各渠道成交
|
||||
* @param type
|
||||
|
@ -211,8 +211,81 @@ public class HomeServiceImpl implements HomeService {
|
||||
return res;
|
||||
}
|
||||
|
||||
private String contractSource="转介绍";
|
||||
/**
|
||||
* 获取部门下各员工的合同总金额
|
||||
* 按人员成交【转介绍】列表,根据部门获取
|
||||
* @param type
|
||||
* @param deptId
|
||||
* @return
|
||||
*/
|
||||
public Object getUserContractSourceAmountsByDeptId(Integer type,Long deptId){
|
||||
Map<String, Object> mapParam = this.getDate(type);
|
||||
LocalDate startDate = (LocalDate)mapParam.get("startDate");
|
||||
LocalDate endDate = (LocalDate)mapParam.get("endDate");
|
||||
String date = (String)mapParam.get("date");
|
||||
|
||||
Map<String,Object> queryParam=new HashMap<>();
|
||||
queryParam.put("startDate",startDate);
|
||||
queryParam.put("endDate",endDate);
|
||||
queryParam.put("contractStatus",ContractStatusEnum.INIT.getCode());
|
||||
queryParam.put("isCancel",CommonStatusEnum.SUCCESS.getCode());
|
||||
queryParam.put("deptId",deptId);
|
||||
|
||||
List<UserContractAmountInfo> list=psContractInfoMapper.getUserContractSourceAmountsByDeptId(queryParam);
|
||||
Map<Long,UserContractAmountVo> res=new HashMap<>();
|
||||
//记录合同编码,防止重复
|
||||
Map<String,String> repeatContractCode=new HashMap<>();
|
||||
for(UserContractAmountInfo obj:list){
|
||||
UserContractAmountVo vo=res.get(obj.getUserId());
|
||||
if(vo==null){
|
||||
vo=new UserContractAmountVo();
|
||||
vo.setUserId(obj.getUserId());
|
||||
vo.setNickName(obj.getNickName());
|
||||
vo.setDateStr(date);
|
||||
res.put(obj.getUserId(),vo);
|
||||
}
|
||||
if(repeatContractCode.get(obj.getContractCode())==null){
|
||||
repeatContractCode.put(obj.getContractCode(),obj.getContractCode());
|
||||
vo.addSumAmount(obj.getContractAmount());
|
||||
}
|
||||
//判断是否为转介绍合同
|
||||
if(contractSource.equals(obj.getCustomSource())){
|
||||
vo.addJieShaoAmount(obj.getContractAmount());
|
||||
vo.addJieShaoContractNum();
|
||||
}else {
|
||||
vo.addOtherAmount(obj.getContractAmount());
|
||||
}
|
||||
}
|
||||
|
||||
//构建表格第一行数据
|
||||
UserContractAmountVo title= new UserContractAmountVo();
|
||||
title.setNickName("总计");
|
||||
title.setDateStr(date);
|
||||
title.setOtherAmount(null);
|
||||
title.setSoftwareDevAmount(null);
|
||||
title.setTuoGuanAmount(null);
|
||||
title.setXuFeiAmount(null);
|
||||
|
||||
//按总金额降序处理
|
||||
List<UserContractAmountVo> listData=res.values().stream().sorted(
|
||||
Comparator.comparing(UserContractAmountVo::getSumAmount,Comparator.reverseOrder())).collect(Collectors.toList());
|
||||
|
||||
for (UserContractAmountVo v:listData) {
|
||||
title.addSumAmount(v.getSumAmount());
|
||||
}
|
||||
//计算转介绍金额占比
|
||||
for (UserContractAmountVo v:listData) {
|
||||
if(!BigDecimal.ZERO.equals(v.getJieShaoAmount())) {
|
||||
v.setJieShaoPer(v.getJieShaoAmount().multiply(new BigDecimal("100.0")).divide(v.getSumAmount(), 2, RoundingMode.HALF_UP).toPlainString() + "%");
|
||||
}else {
|
||||
v.setJieShaoPer("0.00%");
|
||||
}
|
||||
}
|
||||
listData.add(0,title);
|
||||
return listData;
|
||||
}
|
||||
/**
|
||||
* 按人员成交数据列表,根据部门获取
|
||||
* @param type 日期过滤规则
|
||||
* @param deptId 部门id
|
||||
* @return
|
||||
@ -287,13 +360,60 @@ public class HomeServiceImpl implements HomeService {
|
||||
}
|
||||
//计算金额占比
|
||||
for (UserContractAmountVo v:listData) {
|
||||
if(!v.getSumAmount().equals(BigDecimal.ZERO)) {
|
||||
v.setAmountPer(v.getSumAmount().multiply(new BigDecimal("100.0")).divide(title.getSumAmount(), 2, RoundingMode.HALF_UP).toPlainString() + "%");
|
||||
}else {
|
||||
v.setAmountPer("0.00%");
|
||||
}
|
||||
}
|
||||
|
||||
listData.add(0,title);
|
||||
return listData;
|
||||
}
|
||||
|
||||
/**
|
||||
* 按人员成交数据饼图,所有部门人员
|
||||
* @param type
|
||||
* @return
|
||||
*/
|
||||
public Object getUserContractAndPayInfo(Integer type){
|
||||
Map<String, Object> mapParam = this.getDate(type);
|
||||
LocalDate startDate = (LocalDate)mapParam.get("startDate");
|
||||
LocalDate endDate = (LocalDate)mapParam.get("endDate");
|
||||
String date = (String)mapParam.get("date");
|
||||
|
||||
Map<String,Object> queryParam=new HashMap<>();
|
||||
queryParam.put("startDate",startDate);
|
||||
queryParam.put("endDate",endDate);
|
||||
queryParam.put("contractStatus",ContractStatusEnum.INIT.getCode());
|
||||
queryParam.put("isCancel",CommonStatusEnum.SUCCESS.getCode());
|
||||
queryParam.put("payStatus",PayStatusEnum.SUCCESS.getCode());
|
||||
|
||||
List<UserContractAmountInfo> list=psContractInfoMapper.getUserContractAndPayInfo(queryParam);
|
||||
Map<Long,UserAmountInfoVo> resMap=new HashMap<>();
|
||||
for (UserContractAmountInfo obj:list) {
|
||||
Long userId=obj.getUserId();
|
||||
UserAmountInfoVo vo= resMap.get(userId);
|
||||
if(vo==null){
|
||||
vo=new UserAmountInfoVo();
|
||||
vo.setUserId(userId);
|
||||
vo.setNickName(obj.getNickName());
|
||||
vo.setDateStr(date);
|
||||
resMap.put(userId, vo);
|
||||
}
|
||||
//累计合同数量
|
||||
if(obj.getContractCode()!=null&&obj.getContractCode().length()>0){
|
||||
vo.addContractNum();
|
||||
}
|
||||
vo.addSumAmount(obj.getContractAmount());
|
||||
vo.addPayedSumAmount(obj.getPayedMoney());
|
||||
}
|
||||
//计算未付款金额
|
||||
resMap.values().forEach(v->{
|
||||
v.setUnPaySumAmount(v.getSumAmount().subtract(v.getPayedSumAmount()));
|
||||
});
|
||||
return resMap.values();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
@ -86,6 +86,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
info.is_cancel != #{queryParam.isCancel}
|
||||
</select>
|
||||
|
||||
<!-- 按人员成交数据列表 -->
|
||||
<select id="getUserContractTypeAmountsByDeptId" resultType="com.pusong.business.domain.vo.home.UserContractAmountInfo">
|
||||
SELECT
|
||||
u.user_id as userId,
|
||||
@ -111,6 +112,84 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
WHERE u.dept_id=#{queryParam.deptId}
|
||||
</select>
|
||||
|
||||
<!-- 按人员成交数据统计饼图 -->
|
||||
<select id="getUserContractAndPayInfo" resultType="com.pusong.business.domain.vo.home.UserContractAmountInfo">
|
||||
SELECT
|
||||
u.user_id as userId,
|
||||
u.nick_name as nickName,
|
||||
info.contract_code as contractCode,
|
||||
info.contract_amount as contractAmount,
|
||||
pay.money as payedMoney
|
||||
FROM sys_user u
|
||||
LEFT JOIN ps_contract_info info on
|
||||
u.user_id=info.custom_manager
|
||||
<if test="queryParam.startDate != null">
|
||||
and info.apply_date >= #{queryParam.startDate}
|
||||
</if>
|
||||
<if test="queryParam.endDate != null">
|
||||
and info.apply_date < #{queryParam.endDate}
|
||||
</if>
|
||||
and info.contract_status != #{queryParam.contractStatus}
|
||||
and info.is_cancel != #{queryParam.isCancel}
|
||||
|
||||
LEFT JOIN ps_contract_pay pay on
|
||||
info.contract_code=pay.contract_code
|
||||
and pay.pay_status=#{queryParam.payStatus}
|
||||
and pay.del_flag=0
|
||||
</select>
|
||||
|
||||
<!-- 按人员成交数据【转介绍】 -->
|
||||
<select id="getUserContractSourceAmountsByDeptId" resultType="com.pusong.business.domain.vo.home.UserContractAmountInfo">
|
||||
SELECT
|
||||
u.user_id as userId,
|
||||
u.nick_name as nickName,
|
||||
IFNULL(info.contract_amount,0) as contractAmount,
|
||||
info.is_due as isDue,
|
||||
info.contract_code as contractCode,
|
||||
cus.custom_source as customSource
|
||||
FROM sys_user u
|
||||
LEFT JOIN ps_contract_info info on
|
||||
u.user_id=info.custom_manager
|
||||
and info.contract_status != #{queryParam.contractStatus}
|
||||
and info.is_cancel != #{queryParam.isCancel}
|
||||
|
||||
<if test="queryParam.startDate != null">
|
||||
and info.apply_date >= #{queryParam.startDate}
|
||||
</if>
|
||||
<if test="queryParam.endDate != null">
|
||||
and info.apply_date < #{queryParam.endDate}
|
||||
</if>
|
||||
|
||||
LEFT JOIN ps_custom_info cus on info.custom_id=cus.id
|
||||
WHERE u.dept_id=#{queryParam.deptId}
|
||||
</select>
|
||||
|
||||
<!-- 按人员成交【转介绍】数据统计饼图 -->
|
||||
<select id="getJieShaoContractAndPayInfo" resultType="com.pusong.business.domain.vo.home.UserContractAmountInfo">
|
||||
SELECT
|
||||
u.user_id as userId,
|
||||
u.nick_name as nickName,
|
||||
info.contract_code as contractCode,
|
||||
info.contract_amount as contractAmount,
|
||||
pay.money as payedMoney
|
||||
FROM sys_user u
|
||||
LEFT JOIN ps_contract_info info on
|
||||
u.user_id=info.custom_manager
|
||||
<if test="queryParam.startDate != null">
|
||||
and info.apply_date >= #{queryParam.startDate}
|
||||
</if>
|
||||
<if test="queryParam.endDate != null">
|
||||
and info.apply_date < #{queryParam.endDate}
|
||||
</if>
|
||||
and info.contract_status != #{queryParam.contractStatus}
|
||||
and info.is_cancel != #{queryParam.isCancel}
|
||||
|
||||
LEFT JOIN ps_contract_pay pay on
|
||||
info.contract_code=pay.contract_code
|
||||
and pay.pay_status=#{queryParam.payStatus}
|
||||
and pay.del_flag=0
|
||||
</select>
|
||||
|
||||
|
||||
<sql id="channel">
|
||||
select
|
||||
|
Loading…
Reference in New Issue
Block a user