diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/batch/CalSalaryBatch.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/batch/CalSalaryBatch.java index 3f1b2cd..a7c69cf 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/batch/CalSalaryBatch.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/batch/CalSalaryBatch.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.pusong.business.domain.PsContractInfo; import com.pusong.business.domain.PsSalaryConfig; +import com.pusong.business.domain.vo.PsContractBusinessDetailVo; import com.pusong.business.domain.vo.PsContractBusinessVo; import com.pusong.business.enums.ContractStatusEnum; import com.pusong.business.mapper.PsContractInfoMapper; @@ -72,9 +73,9 @@ public class CalSalaryBatch { log.info("本月无已完成合同"); contractInfos = new ArrayList<>(); } + //转换 客户经理有的合同编码 Map> map = contractInfos.stream().collect(Collectors.groupingBy(PsContractInfo::getCustomManager, Collectors.mapping(PsContractInfo::getContractCode,Collectors.toList()))); - List contractCodes = contractInfos.stream().map(PsContractInfo::getContractCode).toList(); //查询所有岗位配置信息 List configs = psSalaryConfigMapper.selectList(); @@ -90,8 +91,10 @@ public class CalSalaryBatch { log.info("查询员工岗位{}",post.getPostId()); //服务列表 List busin = businessService.selectBusinessList(map.get(userId)); - - calSalary(busin,post.getPostId(),configMap.get(post)); + log.info("进行计算提成计算"); + BigDecimal salary = calSalary(busin, configMap.get(post.getPostId())); + log.info("进行计算提成计算{}",salary); + log.info("进行存表"); } @@ -100,15 +103,33 @@ public class CalSalaryBatch { /** * - * @param businessVo 合同信息 - * @param postId + * @param businessVo 服务项目 + * @param configMap 配置map * @return */ - private BigDecimal calSalary(List businessVo,Long postId,Map map){ + private BigDecimal calSalary(List businessVo,Map configMap){ BigDecimal salary = BigDecimal.ZERO; - businessVo.forEach(item->{ - item.getBusinessAmount(); - }); + for(PsContractBusinessVo item : businessVo){ + + //如果详情没有填写金额的话按照详情中最低的提成比例进行计算(按照详情算) + if(item.getDetailVoList().get(0).getAmount() == null + || BigDecimal.ZERO.compareTo(item.getDetailVoList().get(0).getAmount()) == 0){ + BigDecimal rate = new BigDecimal("0.1"); + for (PsContractBusinessDetailVo detail:item.getDetailVoList()){ + BigDecimal rateConfig = configMap.get(detail.getBusinessProject()) == null?new BigDecimal("0.1"):configMap.get(detail.getBusinessProject()); + rate = rate.compareTo(rateConfig)>0?rate:rateConfig; + } + //服务类型金额 + BigDecimal amount = item.getBusinessAmount(); + salary = salary.add(amount.multiply(rate)); + }else{//(按照类型算) + for (PsContractBusinessDetailVo detail:item.getDetailVoList()){ + BigDecimal rateConfig = configMap.get(detail.getBusinessProject()) == null?new BigDecimal("0.1"):configMap.get(detail.getBusinessProject()); + salary = salary.add(detail.getAmount().multiply(rateConfig)); + } + } + + } return salary; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskMainVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskMainVo.java index 454d130..917226d 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskMainVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskMainVo.java @@ -35,6 +35,10 @@ public class PsTaskMainVo implements Serializable { * 主键id */ private Long id; + /** + * 主任务主键id + */ + private Long mainId; /** * 合同编码 */ diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/CancellaApproverServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/CancellaApproverServiceImpl.java index d11fdd8..2ce30bf 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/CancellaApproverServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/CancellaApproverServiceImpl.java @@ -47,9 +47,9 @@ public class CancellaApproverServiceImpl extends ApproverAbstractServiceImpl { contractInfoService.updateByCode(psContractInfo); //主任务作废 taskMainMapper.update(Wrappers.lambdaUpdate() - .set(PsTaskMain::getTaskStatus,TaskStatusEnum.CANCEL) + .set(PsTaskMain::getTaskStatus,TaskStatusEnum.CANCEL.getCode()) .eq(PsTaskMain::getContractCode, psApproverRecord.getContractCode()) - .ne(PsTaskMain::getTaskStatus,TaskStatusEnum.CANCEL)); + .ne(PsTaskMain::getTaskStatus,TaskStatusEnum.CANCEL.getCode())); //子任务作废 taskAppointMapper.update(Wrappers.lambdaUpdate() .set(PsTaskAppoint::getAppointStatus, TaskStatusEnum.AppointStatusEnum.CANCEL.getCode()) diff --git a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsTaskMainMapper.xml b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsTaskMainMapper.xml index e722d37..b5cd12b 100644 --- a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsTaskMainMapper.xml +++ b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsTaskMainMapper.xml @@ -62,6 +62,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" main.start_date, main.task_status, main.contract_code, + main.id main_id, con.is_proxy con_is_proxy, con.custom_scene con_custom_scene, con.custom_manager con_custom_manager,