diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/HomeController.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/HomeController.java index 8d0c44f..8474d02 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/HomeController.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/HomeController.java @@ -22,6 +22,9 @@ import org.springframework.web.bind.annotation.RestController; import java.util.Map; +import java.util.List; +import java.util.Map; + /** * 员工提成提成 * @@ -58,6 +61,17 @@ public class HomeController extends BaseController { public R returnMoney(@RequestParam() Integer type) { return R.ok(homeService.returnMoney(type)); } + + /** + * 首页大盘数据:人员合同金额统计 + * @param type 1本月 2上月 3本季度 4本年 5所有 + * @return + */ + @SaCheckPermission("business:salary:list") + @GetMapping("/getUserContractAmounts") + public R getUserContractAmounts(@RequestParam() Integer type, @RequestParam() Long deptId) { + return R.ok(homeService.getUserContractAmountsByDeptId(type,deptId)); + } /** * 首页大盘数据:各渠道成交 * @param type 1本月 2上月 3本季度 4本年 5所有 diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/home/UserContractAmountInfo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/home/UserContractAmountInfo.java new file mode 100644 index 0000000..7610c3d --- /dev/null +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/home/UserContractAmountInfo.java @@ -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; +} diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/home/UserContractAmountVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/home/UserContractAmountVo.java new file mode 100644 index 0000000..361970b --- /dev/null +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/home/UserContractAmountVo.java @@ -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); + } +} diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsContractInfoMapper.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsContractInfoMapper.java index 4f83d65..2e3f719 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsContractInfoMapper.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsContractInfoMapper.java @@ -10,6 +10,7 @@ import com.pusong.business.domain.vo.PsContractInfoVo; import com.pusong.business.domain.vo.PsCustomInfoVo; import com.pusong.business.domain.vo.PsSalaryContractVo; 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.DataPermission; import com.pusong.common.mybatis.core.mapper.BaseMapperPlus; @@ -44,6 +45,7 @@ public interface PsContractInfoMapper extends BaseMapperPlus querySalaryListByCodes(@Param(Constants.WRAPPER) Wrapper queryWrapper); List> homePageReturnMoneyInfo(@Param("queryParam") Map queryParam); + List getUserContractTypeAmountsByDeptId(@Param("queryParam") Map queryParam); //首页查询各个渠道成交的合同 diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/HomeService.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/HomeService.java index b3dc093..e6faed7 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/HomeService.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/HomeService.java @@ -4,6 +4,8 @@ import com.pusong.business.domain.vo.home.*; import java.util.Map; +import java.util.List; + /** * 首页相关接口 */ @@ -12,7 +14,7 @@ public interface HomeService { MakeAmountVo selectMakeAmount(Integer type); ReturnMoneyInfoVo returnMoney(Integer type); - + List getUserContractAmountsByDeptId(Integer type, Long deptId); /** * 首页大盘数据:各渠道成交 * @param type diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/HomeServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/HomeServiceImpl.java index 3b2ecf1..bf5402a 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/HomeServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/HomeServiceImpl.java @@ -209,6 +209,89 @@ public class HomeServiceImpl implements HomeService { return res; } + /** + * 获取部门下各员工的合同总金额 + * @param type 日期过滤规则 + * @param deptId 部门id + * @return + */ + public List getUserContractAmountsByDeptId(Integer type,Long deptId) { + Map mapParam = this.getDate(type); + LocalDate startDate = (LocalDate)mapParam.get("startDate"); + LocalDate endDate = (LocalDate)mapParam.get("endDate"); + String date = (String)mapParam.get("date"); + + Map 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 list=psContractInfoMapper.getUserContractTypeAmountsByDeptId(queryParam); + Map res=new HashMap<>(); + //记录合同编码,防止重复 + Map 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 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; + } + /** diff --git a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsContractInfoMapper.xml b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsContractInfoMapper.xml index e721b2f..e3f9ad0 100644 --- a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsContractInfoMapper.xml +++ b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsContractInfoMapper.xml @@ -80,12 +80,37 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" info.apply_date >= #{queryParam.startDate} and - info.apply_date <= #{queryParam.endDate} and + info.apply_date < #{queryParam.endDate} and info.contract_status != #{queryParam.contractStatus} and info.is_cancel != #{queryParam.isCancel} + +