任务作废

This commit is contained in:
1073413548 2024-08-23 18:08:56 +08:00
parent c688020ccc
commit 346f57f37c
4 changed files with 37 additions and 11 deletions

View File

@ -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<Long, List<String>> map = contractInfos.stream().collect(Collectors.groupingBy(PsContractInfo::getCustomManager,
Collectors.mapping(PsContractInfo::getContractCode,Collectors.toList())));
List<String> contractCodes = contractInfos.stream().map(PsContractInfo::getContractCode).toList();
//查询所有岗位配置信息
List<PsSalaryConfig> configs = psSalaryConfigMapper.selectList();
@ -90,8 +91,10 @@ public class CalSalaryBatch {
log.info("查询员工岗位{}",post.getPostId());
//服务列表
List<PsContractBusinessVo> 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<PsContractBusinessVo> businessVo,Long postId,Map<String, BigDecimal> map){
private BigDecimal calSalary(List<PsContractBusinessVo> businessVo,Map<String, BigDecimal> 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;
}

View File

@ -35,6 +35,10 @@ public class PsTaskMainVo implements Serializable {
* 主键id
*/
private Long id;
/**
* 主任务主键id
*/
private Long mainId;
/**
* 合同编码
*/

View File

@ -47,9 +47,9 @@ public class CancellaApproverServiceImpl extends ApproverAbstractServiceImpl {
contractInfoService.updateByCode(psContractInfo);
//主任务作废
taskMainMapper.update(Wrappers.<PsTaskMain>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.<PsTaskAppoint>lambdaUpdate()
.set(PsTaskAppoint::getAppointStatus, TaskStatusEnum.AppointStatusEnum.CANCEL.getCode())

View File

@ -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,