人员合同数据列表接口开发
This commit is contained in:
parent
12c07f1e8a
commit
ae55723f8b
@ -22,6 +22,9 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 员工提成提成
|
* 员工提成提成
|
||||||
*
|
*
|
||||||
@ -58,6 +61,17 @@ public class HomeController extends BaseController {
|
|||||||
public R<ReturnMoneyInfoVo> returnMoney(@RequestParam() Integer type) {
|
public R<ReturnMoneyInfoVo> returnMoney(@RequestParam() Integer type) {
|
||||||
return R.ok(homeService.returnMoney(type));
|
return R.ok(homeService.returnMoney(type));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 首页大盘数据:人员合同金额统计
|
||||||
|
* @param type 1本月 2上月 3本季度 4本年 5所有
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("business:salary:list")
|
||||||
|
@GetMapping("/getUserContractAmounts")
|
||||||
|
public R<List> getUserContractAmounts(@RequestParam() Integer type, @RequestParam() Long deptId) {
|
||||||
|
return R.ok(homeService.getUserContractAmountsByDeptId(type,deptId));
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 首页大盘数据:各渠道成交
|
* 首页大盘数据:各渠道成交
|
||||||
* @param type 1本月 2上月 3本季度 4本年 5所有
|
* @param type 1本月 2上月 3本季度 4本年 5所有
|
||||||
|
@ -0,0 +1,33 @@
|
|||||||
|
package com.pusong.business.domain.vo.home;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class UserContractAmountInfo {
|
||||||
|
/**
|
||||||
|
* 用户id
|
||||||
|
*/
|
||||||
|
private Long userId;
|
||||||
|
/**
|
||||||
|
* 用户名字
|
||||||
|
*/
|
||||||
|
private String nickName;
|
||||||
|
/**
|
||||||
|
* 合同编号
|
||||||
|
*/
|
||||||
|
private String contractCode;
|
||||||
|
/**
|
||||||
|
* 是否为续签合同 0:否 1:是
|
||||||
|
*/
|
||||||
|
private String isDue;
|
||||||
|
/**
|
||||||
|
* 合同类型
|
||||||
|
*/
|
||||||
|
private String businessType;
|
||||||
|
/**
|
||||||
|
* 合同价格
|
||||||
|
*/
|
||||||
|
private BigDecimal contractAmount;
|
||||||
|
}
|
@ -0,0 +1,59 @@
|
|||||||
|
package com.pusong.business.domain.vo.home;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class UserContractAmountVo {
|
||||||
|
/**
|
||||||
|
* 用户id
|
||||||
|
*/
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
private String dateStr;
|
||||||
|
/**
|
||||||
|
* 用户名字
|
||||||
|
*/
|
||||||
|
private String nickName;
|
||||||
|
/**
|
||||||
|
* 与其他人合同金额的占比
|
||||||
|
*/
|
||||||
|
private String amountPer;
|
||||||
|
/**
|
||||||
|
* 用户所有合同总金额
|
||||||
|
*/
|
||||||
|
private BigDecimal sumAmount=new BigDecimal(0);
|
||||||
|
/**
|
||||||
|
* 托管类型合同总金额 类型号:4
|
||||||
|
*/
|
||||||
|
private BigDecimal tuoGuanAmount=new BigDecimal(0);
|
||||||
|
/**
|
||||||
|
* 续费类型合同总金额
|
||||||
|
*/
|
||||||
|
private BigDecimal xuFeiAmount=new BigDecimal(0);
|
||||||
|
/**
|
||||||
|
* 软件定制类型合同总金额 类型号:9
|
||||||
|
*/
|
||||||
|
private BigDecimal softwareDevAmount=new BigDecimal(0);
|
||||||
|
/**
|
||||||
|
* 其他类型合同总金额
|
||||||
|
*/
|
||||||
|
private BigDecimal otherAmount=new BigDecimal(0);
|
||||||
|
|
||||||
|
public void addSumAmount(BigDecimal amount){
|
||||||
|
sumAmount=sumAmount.add(amount);
|
||||||
|
}
|
||||||
|
public void addTuoGuanAmount(BigDecimal amount){
|
||||||
|
tuoGuanAmount=tuoGuanAmount.add(amount);
|
||||||
|
}
|
||||||
|
public void addXuFeiAmount(BigDecimal amount){
|
||||||
|
xuFeiAmount=xuFeiAmount.add(amount);
|
||||||
|
}
|
||||||
|
public void addSoftwareDevAmount(BigDecimal amount){
|
||||||
|
softwareDevAmount=softwareDevAmount.add(amount);
|
||||||
|
}
|
||||||
|
public void addOtherAmount(BigDecimal amount) {
|
||||||
|
otherAmount=otherAmount.add(amount);
|
||||||
|
}
|
||||||
|
}
|
@ -10,6 +10,7 @@ import com.pusong.business.domain.vo.PsContractInfoVo;
|
|||||||
import com.pusong.business.domain.vo.PsCustomInfoVo;
|
import com.pusong.business.domain.vo.PsCustomInfoVo;
|
||||||
import com.pusong.business.domain.vo.PsSalaryContractVo;
|
import com.pusong.business.domain.vo.PsSalaryContractVo;
|
||||||
import com.pusong.business.domain.vo.home.ChannelPayInfo;
|
import com.pusong.business.domain.vo.home.ChannelPayInfo;
|
||||||
|
import com.pusong.business.domain.vo.home.UserContractAmountInfo;
|
||||||
import com.pusong.common.mybatis.annotation.DataColumn;
|
import com.pusong.common.mybatis.annotation.DataColumn;
|
||||||
import com.pusong.common.mybatis.annotation.DataPermission;
|
import com.pusong.common.mybatis.annotation.DataPermission;
|
||||||
import com.pusong.common.mybatis.core.mapper.BaseMapperPlus;
|
import com.pusong.common.mybatis.core.mapper.BaseMapperPlus;
|
||||||
@ -44,6 +45,7 @@ public interface PsContractInfoMapper extends BaseMapperPlus<PsContractInfo, PsC
|
|||||||
List<PsSalaryContract> querySalaryListByCodes(@Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
|
List<PsSalaryContract> querySalaryListByCodes(@Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
|
||||||
|
|
||||||
List<Map<String,Object>> homePageReturnMoneyInfo(@Param("queryParam") Map<String, Object> queryParam);
|
List<Map<String,Object>> homePageReturnMoneyInfo(@Param("queryParam") Map<String, Object> queryParam);
|
||||||
|
List<UserContractAmountInfo> getUserContractTypeAmountsByDeptId(@Param("queryParam") Map<String, Object> queryParam);
|
||||||
|
|
||||||
|
|
||||||
//首页查询各个渠道成交的合同
|
//首页查询各个渠道成交的合同
|
||||||
|
@ -4,6 +4,8 @@ import com.pusong.business.domain.vo.home.*;
|
|||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 首页相关接口
|
* 首页相关接口
|
||||||
*/
|
*/
|
||||||
@ -12,7 +14,7 @@ public interface HomeService {
|
|||||||
MakeAmountVo selectMakeAmount(Integer type);
|
MakeAmountVo selectMakeAmount(Integer type);
|
||||||
|
|
||||||
ReturnMoneyInfoVo returnMoney(Integer type);
|
ReturnMoneyInfoVo returnMoney(Integer type);
|
||||||
|
List getUserContractAmountsByDeptId(Integer type, Long deptId);
|
||||||
/**
|
/**
|
||||||
* 首页大盘数据:各渠道成交
|
* 首页大盘数据:各渠道成交
|
||||||
* @param type
|
* @param type
|
||||||
|
@ -209,6 +209,89 @@ public class HomeServiceImpl implements HomeService {
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取部门下各员工的合同总金额
|
||||||
|
* @param type 日期过滤规则
|
||||||
|
* @param deptId 部门id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public List getUserContractAmountsByDeptId(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.getUserContractTypeAmountsByDeptId(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(obj.getBusinessType()!=null&&obj.getBusinessType().equals("4")){
|
||||||
|
vo.addTuoGuanAmount(obj.getContractAmount());
|
||||||
|
} else
|
||||||
|
//软件开发合同金额累计
|
||||||
|
if (obj.getBusinessType()!=null&&obj.getBusinessType().equals("9")) {
|
||||||
|
vo.addSoftwareDevAmount(obj.getContractAmount());
|
||||||
|
} else
|
||||||
|
//其他合同金额累计
|
||||||
|
if(obj.getIsDue()==null||obj.getIsDue().equals("0")){
|
||||||
|
vo.addOtherAmount(obj.getContractAmount());
|
||||||
|
}
|
||||||
|
|
||||||
|
//续签合同金额累计
|
||||||
|
if(obj.getIsDue()!=null&&obj.getIsDue().equals("1")){
|
||||||
|
vo.addXuFeiAmount(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) {
|
||||||
|
v.setAmountPer(v.getSumAmount().multiply(new BigDecimal("100.0")).divide(title.getSumAmount(),2, RoundingMode.HALF_UP).toPlainString()+"%");
|
||||||
|
}
|
||||||
|
|
||||||
|
listData.add(0,title);
|
||||||
|
return listData;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -80,12 +80,37 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
info.apply_date >= #{queryParam.startDate} and
|
info.apply_date >= #{queryParam.startDate} and
|
||||||
</if>
|
</if>
|
||||||
<if test="queryParam.endDate != null">
|
<if test="queryParam.endDate != null">
|
||||||
info.apply_date <= #{queryParam.endDate} and
|
info.apply_date < #{queryParam.endDate} and
|
||||||
</if>
|
</if>
|
||||||
info.contract_status != #{queryParam.contractStatus} and
|
info.contract_status != #{queryParam.contractStatus} and
|
||||||
info.is_cancel != #{queryParam.isCancel}
|
info.is_cancel != #{queryParam.isCancel}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="getUserContractTypeAmountsByDeptId" resultType="com.pusong.business.domain.vo.home.UserContractAmountInfo">
|
||||||
|
SELECT
|
||||||
|
u.user_id as userId,
|
||||||
|
u.nick_name as nickName,
|
||||||
|
bus.business_type as businessType,
|
||||||
|
IFNULL(info.contract_amount,0) as contractAmount,
|
||||||
|
info.is_due as isDue,
|
||||||
|
info.contract_code as contractCode
|
||||||
|
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_contract_business bus on bus.contract_code=info.contract_code
|
||||||
|
WHERE u.dept_id=#{queryParam.deptId}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
<select id="byChannel" resultType="com.pusong.business.domain.vo.home.ChannelPayInfo">
|
<select id="byChannel" resultType="com.pusong.business.domain.vo.home.ChannelPayInfo">
|
||||||
select
|
select
|
||||||
|
Loading…
Reference in New Issue
Block a user