生成合同
This commit is contained in:
parent
7e74f38ac4
commit
5f7ade75ec
@ -140,6 +140,9 @@ tenant:
|
|||||||
- sys_user_role
|
- sys_user_role
|
||||||
- sys_client
|
- sys_client
|
||||||
- sys_oss_config
|
- sys_oss_config
|
||||||
|
- ps_salary
|
||||||
|
- ps_salary_config
|
||||||
|
- ps_salary_contract
|
||||||
|
|
||||||
# MyBatisPlus配置
|
# MyBatisPlus配置
|
||||||
# https://baomidou.com/config/
|
# https://baomidou.com/config/
|
||||||
|
@ -4,3 +4,4 @@ com.pusong.common.translation.core.impl.DictTypeTranslationImpl
|
|||||||
com.pusong.common.translation.core.impl.OssUrlTranslationImpl
|
com.pusong.common.translation.core.impl.OssUrlTranslationImpl
|
||||||
com.pusong.common.translation.core.impl.UserNameTranslationImpl
|
com.pusong.common.translation.core.impl.UserNameTranslationImpl
|
||||||
com.pusong.common.translation.core.impl.NicknameTranslationImpl
|
com.pusong.common.translation.core.impl.NicknameTranslationImpl
|
||||||
|
com.pusong.common.translation.core.impl.PostNameTranslationImpl
|
||||||
|
@ -0,0 +1,27 @@
|
|||||||
|
package com.pusong.business.batch;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.annotation.SaIgnore;
|
||||||
|
import com.pusong.common.core.domain.R;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
@SaIgnore
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/business/approverRecord")
|
||||||
|
public class BatchController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private CalSalaryBatch calSalaryBatch;
|
||||||
|
|
||||||
|
@GetMapping("/batch")
|
||||||
|
public R<Void> batch(){
|
||||||
|
calSalaryBatch.setNow(LocalDate.of(2024,9,1));
|
||||||
|
calSalaryBatch.execute();
|
||||||
|
return R.ok();
|
||||||
|
}
|
||||||
|
}
|
@ -1,22 +1,17 @@
|
|||||||
package com.pusong.business.batch;
|
package com.pusong.business.batch;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.pusong.business.domain.PsContractInfo;
|
import com.pusong.business.domain.*;
|
||||||
import com.pusong.business.domain.PsContractPay;
|
|
||||||
import com.pusong.business.domain.PsSalary;
|
|
||||||
import com.pusong.business.domain.PsSalaryConfig;
|
|
||||||
import com.pusong.business.domain.vo.PsContractBusinessDetailVo;
|
import com.pusong.business.domain.vo.PsContractBusinessDetailVo;
|
||||||
import com.pusong.business.domain.vo.PsContractBusinessVo;
|
import com.pusong.business.domain.vo.PsContractBusinessVo;
|
||||||
import com.pusong.business.domain.vo.PsContractPayVo;
|
import com.pusong.business.domain.vo.PsContractPayVo;
|
||||||
import com.pusong.business.enums.CommonStatusEnum;
|
import com.pusong.business.enums.CommonStatusEnum;
|
||||||
import com.pusong.business.enums.ContractStatusEnum;
|
import com.pusong.business.enums.ContractStatusEnum;
|
||||||
import com.pusong.business.enums.PayStatusEnum;
|
import com.pusong.business.enums.PayStatusEnum;
|
||||||
import com.pusong.business.mapper.PsContractInfoMapper;
|
import com.pusong.business.mapper.*;
|
||||||
import com.pusong.business.mapper.PsContractPayMapper;
|
|
||||||
import com.pusong.business.mapper.PsSalaryConfigMapper;
|
|
||||||
import com.pusong.business.mapper.PsSalaryMapper;
|
|
||||||
import com.pusong.business.service.IPsContractBusinessService;
|
import com.pusong.business.service.IPsContractBusinessService;
|
||||||
import com.pusong.common.core.utils.DateUtils;
|
import com.pusong.common.core.utils.DateUtils;
|
||||||
import com.pusong.common.core.utils.StringUtils;
|
import com.pusong.common.core.utils.StringUtils;
|
||||||
@ -34,10 +29,7 @@ import org.springframework.stereotype.Component;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.temporal.TemporalAdjusters;
|
import java.time.temporal.TemporalAdjusters;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
@ -59,13 +51,22 @@ public class CalSalaryBatch {
|
|||||||
private PsSalaryMapper psSalaryMapper;
|
private PsSalaryMapper psSalaryMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private PsContractPayMapper payMapper;
|
private PsContractPayMapper payMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private PsSalaryContractMapper salaryContractMapper;
|
||||||
|
LocalDate now = null;
|
||||||
|
|
||||||
|
public void setNow(LocalDate now) {
|
||||||
|
this.now = now;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 每月1日凌晨1点执行
|
* 每月1日凌晨1点执行
|
||||||
*/
|
*/
|
||||||
@Scheduled(cron = "0 0 1 1 * ?")
|
@Scheduled(cron = "0 0 1 1 * ?")
|
||||||
public void execute(){
|
public void execute(){
|
||||||
log.info("员工提成批处理开始");
|
log.info("员工提成批处理开始");
|
||||||
LocalDate now = LocalDate.now();
|
LocalDate now = this.now == null ? LocalDate.now(): this.now;
|
||||||
LocalDate lastDayOfLastMonth = now.with(TemporalAdjusters.firstDayOfMonth());//这个月第一天0分0秒
|
LocalDate lastDayOfLastMonth = now.with(TemporalAdjusters.firstDayOfMonth());//这个月第一天0分0秒
|
||||||
LocalDate firstDayOfLastMonth = lastDayOfLastMonth.minusMonths(1);//上个月第一天0分0秒
|
LocalDate firstDayOfLastMonth = lastDayOfLastMonth.minusMonths(1);//上个月第一天0分0秒
|
||||||
|
|
||||||
@ -105,15 +106,18 @@ public class CalSalaryBatch {
|
|||||||
if(post == null){continue;}
|
if(post == null){continue;}
|
||||||
log.info("查询员工岗位{}",post.getPostId());
|
log.info("查询员工岗位{}",post.getPostId());
|
||||||
//服务列表
|
//服务列表
|
||||||
List<String> codeList = finistMap.get(userId).stream().map(PsContractInfo::getContractCode).toList();
|
List<String> codeList = new ArrayList<>(finistMap.get(userId) == null ? new ArrayList<>() : finistMap.get(userId).stream().map(PsContractInfo::getContractCode).toList());
|
||||||
List<PsContractBusinessVo> busin = businessService.selectBusinessList(codeList);
|
List<PsContractBusinessVo> busin = businessService.selectBusinessList(codeList);
|
||||||
//所有合同的退款列表
|
//所有合同的退款列表
|
||||||
codeList.addAll(unfinistMap.get(userId).stream().map(PsContractInfo::getContractCode).toList());
|
codeList.addAll(unfinistMap.get(userId) == null ? new ArrayList<>() : unfinistMap.get(userId).stream().map(PsContractInfo::getContractCode).toList());
|
||||||
|
|
||||||
log.info("进行计算提成计算");
|
log.info("进行计算提成计算");
|
||||||
BigDecimal salary = calSalary(busin, configMap.get(post.getPostId()),costMap.get(post.getPostId()));
|
BigDecimal salary = calSalary(busin, configMap.get(post.getPostId()),costMap.get(post.getPostId()));
|
||||||
List<PsContractPay> payList = payMapper.selectList(Wrappers.<PsContractPay>lambdaQuery().in(PsContractPay::getContractCode, codeList).
|
List<PsContractPay> payList = new ArrayList<>();
|
||||||
eq(PsContractPay::getPayStatus, PayStatusEnum.SUCCESS.getCode()).eq(PsContractPay::getBusinessType,"2"));
|
if(CollectionUtils.isNotEmpty(codeList)){
|
||||||
|
payList = payMapper.selectList(Wrappers.<PsContractPay>lambdaQuery().in(PsContractPay::getContractCode, codeList).
|
||||||
|
eq(PsContractPay::getPayStatus, PayStatusEnum.SUCCESS.getCode()).eq(PsContractPay::getBusinessType,"2"));
|
||||||
|
}
|
||||||
//salary- 退费金额*服务项目最高提成
|
//salary- 退费金额*服务项目最高提成
|
||||||
salary = salary.subtract(this.calReturnSalary(payList,configMap.get(post.getPostId())));
|
salary = salary.subtract(this.calReturnSalary(payList,configMap.get(post.getPostId())));
|
||||||
log.info("进行计算提成计算{}",salary);
|
log.info("进行计算提成计算{}",salary);
|
||||||
@ -140,7 +144,29 @@ public class CalSalaryBatch {
|
|||||||
psSalary.setContractMoney(finishMoney.add(unFinishMoney));
|
psSalary.setContractMoney(finishMoney.add(unFinishMoney));
|
||||||
psSalary.setFinistContractMoney(finishMoney);
|
psSalary.setFinistContractMoney(finishMoney);
|
||||||
psSalary.setUnfinistContractMoney(unFinishMoney);
|
psSalary.setUnfinistContractMoney(unFinishMoney);
|
||||||
|
if(CollectionUtils.isNotEmpty(finistMap.get(userId))){
|
||||||
|
psSalary.setFinishContractCode(finistMap.get(userId).stream().map(PsContractInfo::getContractCode).collect(Collectors.joining(",")));
|
||||||
|
}
|
||||||
|
if(CollectionUtils.isNotEmpty(unfinistMap.get(userId))){
|
||||||
|
psSalary.setUnfinishContractCode(finistMap.get(userId).stream().map(PsContractInfo::getContractCode).collect(Collectors.joining(",")));
|
||||||
|
}
|
||||||
psSalaryMapper.insert(psSalary);
|
psSalaryMapper.insert(psSalary);
|
||||||
|
List<PsSalaryContract> lis = new ArrayList<>();
|
||||||
|
if(CollectionUtils.isNotEmpty(finistMap.get(userId))) {
|
||||||
|
List<PsSalaryContract> fin = psContractInfoMapper.querySalaryListByCodes(new QueryWrapper<PsContractInfo>().in("info.contract_code", finistMap.get(userId)));
|
||||||
|
if(CollectionUtils.isNotEmpty(fin)) {
|
||||||
|
fin.forEach(item->{item.setStatus("1");item.setSalaryId(psSalary.getId());});
|
||||||
|
lis.addAll(fin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(CollectionUtils.isNotEmpty(unfinistMap.get(userId))) {
|
||||||
|
List<PsSalaryContract> unfin = psContractInfoMapper.querySalaryListByCodes(new QueryWrapper<PsContractInfo>().in("info.contract_code", unfinistMap.get(userId)));
|
||||||
|
if(CollectionUtils.isNotEmpty(unfin)) {
|
||||||
|
unfin.forEach(item->{item.setStatus("2");item.setSalaryId(psSalary.getId());});
|
||||||
|
lis.addAll(unfin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
salaryContractMapper.insertBatch(lis);
|
||||||
}
|
}
|
||||||
|
|
||||||
log.info("员工提成批处理结束");
|
log.info("员工提成批处理结束");
|
||||||
@ -160,6 +186,8 @@ public class CalSalaryBatch {
|
|||||||
String cbStr = "0.0";
|
String cbStr = "0.0";
|
||||||
String rateStr = "0.1";
|
String rateStr = "0.1";
|
||||||
|
|
||||||
|
configMap = CollectionUtils.isEmpty(configMap)?new HashMap<>():configMap;
|
||||||
|
costMap = CollectionUtils.isEmpty(costMap)?new HashMap<>():costMap;
|
||||||
BigDecimal salary = BigDecimal.ZERO;
|
BigDecimal salary = BigDecimal.ZERO;
|
||||||
for(PsContractBusinessVo item : businessVo){
|
for(PsContractBusinessVo item : businessVo){
|
||||||
|
|
||||||
@ -203,6 +231,7 @@ public class CalSalaryBatch {
|
|||||||
String cbStr = "0.0";
|
String cbStr = "0.0";
|
||||||
BigDecimal retur = BigDecimal.ZERO;
|
BigDecimal retur = BigDecimal.ZERO;
|
||||||
if(CollectionUtils.isEmpty(payList)){return retur;}
|
if(CollectionUtils.isEmpty(payList)){return retur;}
|
||||||
|
configMap = configMap==null?new HashMap<>():configMap;
|
||||||
for(PsContractPay pay : payList){
|
for(PsContractPay pay : payList){
|
||||||
List<PsContractBusinessVo> list = businessService.selectBusinessList(List.of(pay.getContractCode()));
|
List<PsContractBusinessVo> list = businessService.selectBusinessList(List.of(pay.getContractCode()));
|
||||||
BigDecimal rate = new BigDecimal(cbStr);
|
BigDecimal rate = new BigDecimal(cbStr);
|
||||||
|
@ -5,6 +5,7 @@ import java.util.List;
|
|||||||
import cn.dev33.satoken.annotation.SaIgnore;
|
import cn.dev33.satoken.annotation.SaIgnore;
|
||||||
import com.pusong.business.domain.bo.PsContractInfoQueryBo;
|
import com.pusong.business.domain.bo.PsContractInfoQueryBo;
|
||||||
import com.pusong.business.domain.vo.PsContractBusinessVo;
|
import com.pusong.business.domain.vo.PsContractBusinessVo;
|
||||||
|
import com.pusong.business.domain.vo.PsSalaryContractVo;
|
||||||
import com.pusong.business.domain.vo.ServiceScheduleVo;
|
import com.pusong.business.domain.vo.ServiceScheduleVo;
|
||||||
import com.pusong.business.service.IPsContractBusinessService;
|
import com.pusong.business.service.IPsContractBusinessService;
|
||||||
import com.pusong.common.core.validate.QueryGroup;
|
import com.pusong.common.core.validate.QueryGroup;
|
||||||
@ -185,12 +186,13 @@ public class PsContractInfoController extends BaseController {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@RepeatSubmit()
|
@RepeatSubmit()
|
||||||
@Log(title = "免费派单")
|
@Log(title = "根据合同编码查询服务进度")
|
||||||
@SaCheckPermission("business:task:list")
|
@SaCheckPermission("business:task:list")
|
||||||
@GetMapping("/queryScheduleByCode")
|
@GetMapping("/queryScheduleByCode")
|
||||||
public R<ServiceScheduleVo> queryScheduleByCode(@NotNull String contractCode) {
|
public R<ServiceScheduleVo> queryScheduleByCode(@NotBlank String contractCode) {
|
||||||
return R.ok(psContractInfoService.queryScheduleByCode(contractCode));
|
return R.ok(psContractInfoService.queryScheduleByCode(contractCode));
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// /**
|
// /**
|
||||||
// * 获取合同基本信息详细信息
|
// * 获取合同基本信息详细信息
|
||||||
|
@ -66,12 +66,23 @@ public class PsSalaryConfigController extends BaseController {
|
|||||||
@Log(title = "新增提成配置")
|
@Log(title = "新增提成配置")
|
||||||
@SaCheckPermission("business:salaryConfig:add")
|
@SaCheckPermission("business:salaryConfig:add")
|
||||||
@PostMapping("/add")
|
@PostMapping("/add")
|
||||||
public R<Void> add(PsSalaryConfigAddVo addVo) {
|
public R<Void> add(@RequestBody PsSalaryConfigAddVo addVo) {
|
||||||
psSalaryConfigService.add(addVo);
|
psSalaryConfigService.add(addVo);
|
||||||
return R.ok();
|
return R.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除提成配置
|
||||||
|
*
|
||||||
|
* @param code 主键串
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("business:salaryConfig:remove")
|
||||||
|
@Log(title = "提成配置", businessType = BusinessType.DELETE)
|
||||||
|
@DeleteMapping("/{code}")
|
||||||
|
public R<Void> remove(@NotEmpty(message = "编码不能为空")
|
||||||
|
@PathVariable String code) {
|
||||||
|
return toAjax(psSalaryConfigService.deleteWithValidByIds(code));
|
||||||
|
}
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
// * 导出提成配置列表
|
// * 导出提成配置列表
|
||||||
|
@ -3,6 +3,7 @@ package com.pusong.business.controller;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaIgnore;
|
import cn.dev33.satoken.annotation.SaIgnore;
|
||||||
|
import com.pusong.business.domain.vo.PsSalaryContractVo;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import jakarta.validation.constraints.*;
|
import jakarta.validation.constraints.*;
|
||||||
@ -47,6 +48,17 @@ public class PsSalaryController extends BaseController {
|
|||||||
return psSalaryService.queryPageList(bo, pageQuery);
|
return psSalaryService.queryPageList(bo, pageQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 提成关联合同查询
|
||||||
|
* @param id 列表主键id
|
||||||
|
* @param status 1已完成合同 2未完成合同 (空查全部)
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping("/queryContractPageList")
|
||||||
|
public TableDataInfo<PsSalaryContractVo> queryContractPageList(Long id,String status, PageQuery pageQuery) {
|
||||||
|
return psSalaryService.queryContractPageList(id,status, pageQuery);
|
||||||
|
}
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
// * 导出员工提成提成列表
|
// * 导出员工提成提成列表
|
||||||
// */
|
// */
|
||||||
|
@ -7,6 +7,7 @@ import com.pusong.business.domain.bo.MediaCompanySaveBo;
|
|||||||
import com.pusong.business.domain.bo.PsTaskQueryBo;
|
import com.pusong.business.domain.bo.PsTaskQueryBo;
|
||||||
import com.pusong.business.domain.vo.PsTaskAppointVo;
|
import com.pusong.business.domain.vo.PsTaskAppointVo;
|
||||||
import com.pusong.business.domain.vo.TaskPlanVo;
|
import com.pusong.business.domain.vo.TaskPlanVo;
|
||||||
|
import com.pusong.business.service.IPsContractInfoService;
|
||||||
import com.pusong.common.core.domain.R;
|
import com.pusong.common.core.domain.R;
|
||||||
import com.pusong.common.core.validate.QueryGroup;
|
import com.pusong.common.core.validate.QueryGroup;
|
||||||
import com.pusong.common.idempotent.annotation.RepeatSubmit;
|
import com.pusong.common.idempotent.annotation.RepeatSubmit;
|
||||||
@ -43,7 +44,7 @@ import java.util.Map;
|
|||||||
public class PsTaskController extends BaseController {
|
public class PsTaskController extends BaseController {
|
||||||
|
|
||||||
private final IPsTaskService psTaskMainService;
|
private final IPsTaskService psTaskMainService;
|
||||||
|
private final IPsContractInfoService contractInfoService;
|
||||||
/**
|
/**
|
||||||
* 查询主任务列表
|
* 查询主任务列表
|
||||||
*/
|
*/
|
||||||
@ -118,7 +119,7 @@ public class PsTaskController extends BaseController {
|
|||||||
@SaCheckPermission("business:task:list")
|
@SaCheckPermission("business:task:list")
|
||||||
@GetMapping("/mainFinish")
|
@GetMapping("/mainFinish")
|
||||||
public R<Void> mainFinish(@NotNull Long id) {
|
public R<Void> mainFinish(@NotNull Long id) {
|
||||||
psTaskMainService.finishMain(id);
|
contractInfoService.finish(psTaskMainService.finishMain(id));
|
||||||
return R.ok();
|
return R.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,6 +83,13 @@ public class PsSalary extends TenantEntity {
|
|||||||
*/
|
*/
|
||||||
@TableLogic
|
@TableLogic
|
||||||
private Long delFlag;
|
private Long delFlag;
|
||||||
|
/**
|
||||||
|
* 已完成合同编码
|
||||||
|
*/
|
||||||
|
private String finishContractCode;
|
||||||
|
/**
|
||||||
|
* 未完成合同编码
|
||||||
|
*/
|
||||||
|
private String unfinishContractCode;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,95 @@
|
|||||||
|
package com.pusong.business.domain;
|
||||||
|
|
||||||
|
import com.pusong.common.tenant.core.TenantEntity;
|
||||||
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Date;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 员工提成关联合同对象 ps_salary_contract
|
||||||
|
*
|
||||||
|
* @author wls
|
||||||
|
* @date 2024-09-02
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@TableName("ps_salary_contract")
|
||||||
|
public class PsSalaryContract extends TenantEntity {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键id
|
||||||
|
*/
|
||||||
|
@TableId(value = "id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 员工id
|
||||||
|
*/
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 提成月份
|
||||||
|
*/
|
||||||
|
private Date salaryRatioDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 2逻辑删除 0 默认有效
|
||||||
|
*/
|
||||||
|
@TableLogic
|
||||||
|
private Long delFlag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同编码
|
||||||
|
*/
|
||||||
|
private String contractCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 销售经理
|
||||||
|
*/
|
||||||
|
private Long customManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 客户名称
|
||||||
|
*/
|
||||||
|
private String customName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 客户电话
|
||||||
|
*/
|
||||||
|
private String customMobile;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 公司名
|
||||||
|
*/
|
||||||
|
private String companyName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同金额
|
||||||
|
*/
|
||||||
|
private BigDecimal contractAmount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 服务开始时间
|
||||||
|
*/
|
||||||
|
private Date serviceStartDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 状态 1已完成2未完成
|
||||||
|
*/
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 关联提成表id
|
||||||
|
*/
|
||||||
|
private Long salaryId;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -9,6 +9,8 @@ import io.github.linpeilie.annotations.AutoMapper;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import jakarta.validation.constraints.*;
|
import jakarta.validation.constraints.*;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
@ -20,7 +22,6 @@ import java.util.Date;
|
|||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@AutoMapper(target = PsSalary.class, reverseConvertGenerate = false)
|
|
||||||
public class PsSalaryBo extends BaseEntity {
|
public class PsSalaryBo extends BaseEntity {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -32,14 +33,14 @@ public class PsSalaryBo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 开始时间
|
* 开始时间
|
||||||
*/
|
*/
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
@DateTimeFormat(pattern = "yyyy-MM")
|
||||||
private Date startDate;
|
private Date startDate;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 结束时间
|
* 结束时间
|
||||||
*/
|
*/
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
@DateTimeFormat(pattern = "yyyy-MM")
|
||||||
private Date endDate;
|
private Date endDate;
|
||||||
|
|
||||||
|
|
||||||
|
@ -26,11 +26,10 @@ public class PsSalaryConfigAddVo {
|
|||||||
/**
|
/**
|
||||||
* 岗位id
|
* 岗位id
|
||||||
*/
|
*/
|
||||||
private Long postId;
|
private String postId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 提成详细
|
* 提成详细
|
||||||
*/
|
*/
|
||||||
@NotEmpty
|
|
||||||
private List<SalaryConfigVo> salaryConfigVoList;
|
private List<SalaryConfigVo> salaryConfigVoList;
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@ public class PsSalaryConfigVo implements Serializable {
|
|||||||
* 岗位id
|
* 岗位id
|
||||||
*/
|
*/
|
||||||
@Translation(type = TransConstant.POST_ID_TO_NAME)
|
@Translation(type = TransConstant.POST_ID_TO_NAME)
|
||||||
private Long postId;
|
private String postIds;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 服务项目编码
|
* 服务项目编码
|
||||||
|
@ -0,0 +1,90 @@
|
|||||||
|
package com.pusong.business.domain.vo;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Date;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import com.pusong.business.domain.PsSalaryContract;
|
||||||
|
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
|
import com.pusong.common.excel.annotation.ExcelDictFormat;
|
||||||
|
import com.pusong.common.excel.convert.ExcelDictConvert;
|
||||||
|
import com.pusong.common.translation.annotation.Translation;
|
||||||
|
import com.pusong.common.translation.constant.TransConstant;
|
||||||
|
import io.github.linpeilie.annotations.AutoMapper;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 员工提成关联合同视图对象 ps_salary_contract
|
||||||
|
*
|
||||||
|
* @author wls
|
||||||
|
* @date 2024-09-02
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@ExcelIgnoreUnannotated
|
||||||
|
@AutoMapper(target = PsSalaryContract.class)
|
||||||
|
public class PsSalaryContractVo implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键id
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "主键id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 提成月份
|
||||||
|
*/
|
||||||
|
private Date salaryRatioDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同编码
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "合同编码")
|
||||||
|
private String contractCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 销售经理
|
||||||
|
*/
|
||||||
|
@Translation(type = TransConstant.USER_ID_TO_NICKNAME)
|
||||||
|
private Long customManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 客户名称
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "客户名称")
|
||||||
|
private String customName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 客户电话
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "客户电话")
|
||||||
|
private String customMobile;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 公司名
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "公司名")
|
||||||
|
private String companyName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同金额
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "合同金额")
|
||||||
|
private BigDecimal contractAmount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 服务开始时间
|
||||||
|
*/
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
|
||||||
|
private Date serviceStartDate;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -81,4 +81,12 @@ public class PsSalaryVo implements Serializable {
|
|||||||
* 未完成金额
|
* 未完成金额
|
||||||
*/
|
*/
|
||||||
private BigDecimal unfinistContractMoney;
|
private BigDecimal unfinistContractMoney;
|
||||||
|
/**
|
||||||
|
* 已完成合同编码
|
||||||
|
*/
|
||||||
|
private String finishContractCode;
|
||||||
|
/**
|
||||||
|
* 未完成合同编码
|
||||||
|
*/
|
||||||
|
private String unfinishContractCode;
|
||||||
}
|
}
|
||||||
|
@ -5,8 +5,10 @@ import com.baomidou.mybatisplus.core.toolkit.Constants;
|
|||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.pusong.business.domain.PsContractInfo;
|
import com.pusong.business.domain.PsContractInfo;
|
||||||
import com.pusong.business.domain.PsCustomInfo;
|
import com.pusong.business.domain.PsCustomInfo;
|
||||||
|
import com.pusong.business.domain.PsSalaryContract;
|
||||||
import com.pusong.business.domain.vo.PsContractInfoVo;
|
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.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;
|
||||||
@ -35,4 +37,7 @@ public interface PsContractInfoMapper extends BaseMapperPlus<PsContractInfo, PsC
|
|||||||
})
|
})
|
||||||
List<PsContractInfoVo> selectContractList(@Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
|
List<PsContractInfoVo> selectContractList(@Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
|
||||||
|
|
||||||
|
|
||||||
|
List<PsSalaryContract> querySalaryListByCodes(@Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,15 @@
|
|||||||
|
package com.pusong.business.mapper;
|
||||||
|
|
||||||
|
import com.pusong.business.domain.PsSalaryContract;
|
||||||
|
import com.pusong.business.domain.vo.PsSalaryContractVo;
|
||||||
|
import com.pusong.common.mybatis.core.mapper.BaseMapperPlus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 员工提成关联合同Mapper接口
|
||||||
|
*
|
||||||
|
* @author wls
|
||||||
|
* @date 2024-09-02
|
||||||
|
*/
|
||||||
|
public interface PsSalaryContractMapper extends BaseMapperPlus<PsSalaryContract, PsSalaryContractVo> {
|
||||||
|
|
||||||
|
}
|
@ -4,6 +4,7 @@ import com.pusong.business.domain.PsContractInfo;
|
|||||||
import com.pusong.business.domain.bo.PsContractInfoQueryBo;
|
import com.pusong.business.domain.bo.PsContractInfoQueryBo;
|
||||||
import com.pusong.business.domain.vo.PsContractInfoVo;
|
import com.pusong.business.domain.vo.PsContractInfoVo;
|
||||||
import com.pusong.business.domain.bo.PsContractInfoBo;
|
import com.pusong.business.domain.bo.PsContractInfoBo;
|
||||||
|
import com.pusong.business.domain.vo.PsSalaryContractVo;
|
||||||
import com.pusong.business.domain.vo.ServiceScheduleVo;
|
import com.pusong.business.domain.vo.ServiceScheduleVo;
|
||||||
import com.pusong.business.enums.ContractStatusEnum;
|
import com.pusong.business.enums.ContractStatusEnum;
|
||||||
import com.pusong.common.mybatis.core.page.TableDataInfo;
|
import com.pusong.common.mybatis.core.page.TableDataInfo;
|
||||||
@ -124,6 +125,8 @@ public interface IPsContractInfoService {
|
|||||||
* @param contractCode 合同编码
|
* @param contractCode 合同编码
|
||||||
*/
|
*/
|
||||||
ServiceScheduleVo queryScheduleByCode(String contractCode);
|
ServiceScheduleVo queryScheduleByCode(String contractCode);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询符合条件的合同基本信息列表
|
* 查询符合条件的合同基本信息列表
|
||||||
*
|
*
|
||||||
|
@ -75,12 +75,11 @@ public interface IPsSalaryConfigService {
|
|||||||
// */
|
// */
|
||||||
// Boolean updateByBo(PsSalaryConfigBo bo);
|
// Boolean updateByBo(PsSalaryConfigBo bo);
|
||||||
//
|
//
|
||||||
// /**
|
/**
|
||||||
// * 校验并批量删除提成配置信息
|
* 校验并批量删除提成配置信息
|
||||||
// *
|
*
|
||||||
// * @param ids 待删除的主键集合
|
* @param code 模板编码
|
||||||
// * @param isValid 是否进行有效性校验
|
* @return 是否删除成功
|
||||||
// * @return 是否删除成功
|
*/
|
||||||
// */
|
Boolean deleteWithValidByIds(String code);
|
||||||
// Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package com.pusong.business.service;
|
package com.pusong.business.service;
|
||||||
|
|
||||||
|
import com.pusong.business.domain.PsSalaryContract;
|
||||||
|
import com.pusong.business.domain.vo.PsSalaryContractVo;
|
||||||
import com.pusong.business.domain.vo.PsSalaryVo;
|
import com.pusong.business.domain.vo.PsSalaryVo;
|
||||||
import com.pusong.business.domain.bo.PsSalaryBo;
|
import com.pusong.business.domain.bo.PsSalaryBo;
|
||||||
import com.pusong.common.mybatis.core.page.TableDataInfo;
|
import com.pusong.common.mybatis.core.page.TableDataInfo;
|
||||||
@ -27,6 +29,15 @@ public interface IPsSalaryService {
|
|||||||
*/
|
*/
|
||||||
TableDataInfo<PsSalaryVo> queryPageList(PsSalaryBo bo, PageQuery pageQuery);
|
TableDataInfo<PsSalaryVo> queryPageList(PsSalaryBo bo, PageQuery pageQuery);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 提成关联合同查询
|
||||||
|
* @param id
|
||||||
|
* @param status
|
||||||
|
* @param pageQuery
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
TableDataInfo<PsSalaryContractVo> queryContractPageList(Long id, String status, PageQuery pageQuery);
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
// * 查询员工提成提成
|
// * 查询员工提成提成
|
||||||
// *
|
// *
|
||||||
|
@ -93,7 +93,7 @@ public interface IPsTaskService {
|
|||||||
* @param id 任务主键id
|
* @param id 任务主键id
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
void finishMain(Long id);
|
String finishMain(Long id);
|
||||||
/**
|
/**
|
||||||
* 子任务完成
|
* 子任务完成
|
||||||
*
|
*
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.pusong.business.service.impl;
|
package com.pusong.business.service.impl;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||||
import com.pusong.business.domain.*;
|
import com.pusong.business.domain.*;
|
||||||
@ -560,6 +561,8 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
|
|||||||
serviceScheduleVo.setIsFinish(StringUtils.equals(ContractStatusEnum.SUCCESS.getCode(),contractInfo.getContractStatus())?1:0);
|
serviceScheduleVo.setIsFinish(StringUtils.equals(ContractStatusEnum.SUCCESS.getCode(),contractInfo.getContractStatus())?1:0);
|
||||||
return serviceScheduleVo;
|
return serviceScheduleVo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private QueryWrapper<PsContractInfo> buildQueryWrapper(PsContractInfoQueryBo bo) {
|
private QueryWrapper<PsContractInfo> buildQueryWrapper(PsContractInfoQueryBo bo) {
|
||||||
QueryWrapper<PsContractInfo> qw = Wrappers.query();
|
QueryWrapper<PsContractInfo> qw = Wrappers.query();
|
||||||
//删除标志
|
//删除标志
|
||||||
|
@ -136,7 +136,7 @@ public class PsContractPayServiceImpl implements IPsContractPayService {
|
|||||||
baseMapper.insert(pay);
|
baseMapper.insert(pay);
|
||||||
//发起审批
|
//发起审批
|
||||||
ApproverService service = container.getService(ApproverTypeEnum.RETURN.getCode());
|
ApproverService service = container.getService(ApproverTypeEnum.RETURN.getCode());
|
||||||
service.apply(pay.getId()+"",pay.getContractCode(),payBo.getPayDesc(), pay.getMoney().stripTrailingZeros().toString());
|
service.apply(pay.getId()+"",pay.getContractCode(),payBo.getPayDesc(), pay.getMoney().stripTrailingZeros().toPlainString());
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 根据主键id查询回款记录
|
* 根据主键id查询回款记录
|
||||||
|
@ -21,6 +21,7 @@ import com.pusong.business.domain.PsSalaryConfig;
|
|||||||
import com.pusong.business.mapper.PsSalaryConfigMapper;
|
import com.pusong.business.mapper.PsSalaryConfigMapper;
|
||||||
import com.pusong.business.service.IPsSalaryConfigService;
|
import com.pusong.business.service.IPsSalaryConfigService;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -55,10 +56,10 @@ public class PsSalaryConfigServiceImpl implements IPsSalaryConfigService {
|
|||||||
private QueryWrapper<PsSalaryConfig> buildQueryWrapper(PsSalaryConfigBo bo) {
|
private QueryWrapper<PsSalaryConfig> buildQueryWrapper(PsSalaryConfigBo bo) {
|
||||||
QueryWrapper<PsSalaryConfig> lqw = Wrappers.query();
|
QueryWrapper<PsSalaryConfig> lqw = Wrappers.query();
|
||||||
lqw.select("template_code","max(template_name) template_name","GROUP_CONCAT(DISTINCT service_project SEPARATOR ',') service_project"
|
lqw.select("template_code","max(template_name) template_name","GROUP_CONCAT(DISTINCT service_project SEPARATOR ',') service_project"
|
||||||
,"GROUP_CONCAT(DISTINCT post_id SEPARATOR ',') post_id","max(create_by) create_by","max(create_time) create_time");
|
,"GROUP_CONCAT(DISTINCT post_id SEPARATOR ',') post_ids","max(create_by) create_by","max(create_time) create_time");
|
||||||
lqw.like(StringUtils.isNotBlank(bo.getTemplateName()),"template_name", bo.getTemplateName());
|
lqw.like(StringUtils.isNotBlank(bo.getTemplateName()),"template_name", bo.getTemplateName());
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getTemplateCode()),"template_code", bo.getTemplateCode());
|
lqw.eq(StringUtils.isNotBlank(bo.getTemplateCode()),"template_code", bo.getTemplateCode());
|
||||||
lqw.groupBy(bo.getTemplateCode());
|
lqw.groupBy("template_code");
|
||||||
return lqw;
|
return lqw;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@ -73,21 +74,28 @@ public class PsSalaryConfigServiceImpl implements IPsSalaryConfigService {
|
|||||||
//服务类型:服务项目:成本
|
//服务类型:服务项目:成本
|
||||||
// :提成比例
|
// :提成比例
|
||||||
Map<String,Map<String,Map<String,String>>> map = new HashMap<>();
|
Map<String,Map<String,Map<String,String>>> map = new HashMap<>();
|
||||||
|
Set<String> serviceTypeList = new HashSet<>();
|
||||||
|
Set<String> postIdList = new HashSet<>();
|
||||||
list.forEach(item->{
|
list.forEach(item->{
|
||||||
//服务类型
|
//服务类型
|
||||||
String serviceType = item.getServiceProject().split("_")[0];
|
String serviceType = item.getServiceProject().split("_")[0];
|
||||||
//服务类型code拼接逗号分割
|
//服务类型code拼接逗号分割
|
||||||
vo.setServiceType(StringUtils.isBlank(vo.getServiceType())?serviceType:vo.getServiceType()+","+serviceType);
|
serviceTypeList.add(serviceType);
|
||||||
//岗位id拼接
|
//岗位id拼接
|
||||||
vo.setPostId((StringUtils.isBlank(vo.getPostId())?"":vo.getPostId()+",")+item.getPostId());
|
postIdList.add(item.getPostId()+"");
|
||||||
|
// vo.setServiceType(StringUtils.isBlank(vo.getServiceType())?serviceType:vo.getServiceType()+","+serviceType);
|
||||||
|
// //岗位id拼接
|
||||||
|
// vo.setPostId((StringUtils.isBlank(vo.getPostId())?"":vo.getPostId()+",")+item.getPostId());
|
||||||
//服务项目:提成比例
|
//服务项目:提成比例
|
||||||
Map<String, Map<String,String>> project = CollectionUtils.isNotEmpty(map.get(serviceType))?map.get(serviceType):new HashMap<>();
|
Map<String, Map<String,String>> project = CollectionUtils.isNotEmpty(map.get(serviceType))?map.get(serviceType):new HashMap<>();
|
||||||
Map<String,String> data = new HashMap<>();
|
Map<String,String> data = new HashMap<>();
|
||||||
data.put("cost",item.getCost().stripTrailingZeros().toString());
|
data.put("cost",item.getCost().stripTrailingZeros().toPlainString());
|
||||||
data.put("salaryRatio",item.getSalaryRatio().stripTrailingZeros().toString());
|
data.put("salaryRatio",item.getSalaryRatio().stripTrailingZeros().toPlainString());
|
||||||
project.put(item.getServiceProject(),data);
|
project.put(item.getServiceProject(),data);
|
||||||
map.put(serviceType,project);
|
map.put(serviceType,project);
|
||||||
});
|
});
|
||||||
|
vo.setServiceType(String.join(",",serviceTypeList));
|
||||||
|
vo.setPostId(String.join(",",postIdList));
|
||||||
vo.setServiceTypeMap(map);
|
vo.setServiceTypeMap(map);
|
||||||
vo.setTemplateCode(templateCode);
|
vo.setTemplateCode(templateCode);
|
||||||
vo.setTemplateName(list.get(0).getTemplateName());
|
vo.setTemplateName(list.get(0).getTemplateName());
|
||||||
@ -102,17 +110,32 @@ public class PsSalaryConfigServiceImpl implements IPsSalaryConfigService {
|
|||||||
public void add(PsSalaryConfigAddVo addVo){
|
public void add(PsSalaryConfigAddVo addVo){
|
||||||
List<PsSalaryConfig> list = MapstructUtils.convert(addVo.getSalaryConfigVoList(), PsSalaryConfig.class);
|
List<PsSalaryConfig> list = MapstructUtils.convert(addVo.getSalaryConfigVoList(), PsSalaryConfig.class);
|
||||||
String code = addVo.getTemplateCode() == null ? UUID.randomUUID().toString() : addVo.getTemplateCode();
|
String code = addVo.getTemplateCode() == null ? UUID.randomUUID().toString() : addVo.getTemplateCode();
|
||||||
list.forEach(item->{
|
|
||||||
item.setTemplateCode(code);
|
|
||||||
item.setTemplateName(addVo.getTemplateName());
|
|
||||||
item.setPostId(addVo.getPostId());
|
|
||||||
});
|
|
||||||
if(StringUtils.isNotBlank(addVo.getTemplateCode())){//修改
|
if(StringUtils.isNotBlank(addVo.getTemplateCode())){//修改
|
||||||
baseMapper.delete(Wrappers.<PsSalaryConfig>lambdaQuery().eq(PsSalaryConfig::getTemplateCode, code));
|
baseMapper.delete(Wrappers.<PsSalaryConfig>lambdaQuery().eq(PsSalaryConfig::getTemplateCode, code));
|
||||||
log.info("修改配置成功");
|
log.info("修改配置成功");
|
||||||
|
}
|
||||||
|
for (String post : addVo.getPostId().split(",")) {
|
||||||
|
list.forEach(item->{
|
||||||
|
item.setId(null);
|
||||||
|
item.setTemplateCode(code);
|
||||||
|
item.setTemplateName(addVo.getTemplateName());
|
||||||
|
item.setPostId(Long.valueOf(post));
|
||||||
|
});
|
||||||
|
baseMapper.insertBatch(list);
|
||||||
}
|
}
|
||||||
baseMapper.insertBatch(list);
|
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 校验并批量删除提成配置信息
|
||||||
|
*
|
||||||
|
* @param code 编码
|
||||||
|
* @return 是否删除成功
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean deleteWithValidByIds(String code) {
|
||||||
|
return baseMapper.delete(Wrappers.<PsSalaryConfig>lambdaQuery().eq(PsSalaryConfig::getTemplateCode,code)) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
// * 查询提成配置
|
// * 查询提成配置
|
||||||
// *
|
// *
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
package com.pusong.business.service.impl;
|
package com.pusong.business.service.impl;
|
||||||
|
|
||||||
|
import com.pusong.business.domain.PsSalaryContract;
|
||||||
|
import com.pusong.business.domain.vo.PsSalaryContractVo;
|
||||||
|
import com.pusong.business.mapper.PsSalaryContractMapper;
|
||||||
import com.pusong.common.core.utils.MapstructUtils;
|
import com.pusong.common.core.utils.MapstructUtils;
|
||||||
import com.pusong.common.mybatis.core.page.TableDataInfo;
|
import com.pusong.common.mybatis.core.page.TableDataInfo;
|
||||||
import com.pusong.common.mybatis.core.page.PageQuery;
|
import com.pusong.common.mybatis.core.page.PageQuery;
|
||||||
@ -30,6 +33,7 @@ import java.util.Collection;
|
|||||||
public class PsSalaryServiceImpl implements IPsSalaryService {
|
public class PsSalaryServiceImpl implements IPsSalaryService {
|
||||||
|
|
||||||
private final PsSalaryMapper baseMapper;
|
private final PsSalaryMapper baseMapper;
|
||||||
|
private final PsSalaryContractMapper salaryContractMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页查询员工提成提成列表
|
* 分页查询员工提成提成列表
|
||||||
@ -51,7 +55,19 @@ public class PsSalaryServiceImpl implements IPsSalaryService {
|
|||||||
lqw.exists(StringUtils.isNotBlank(bo.getName()),"select 1 from sys_user su where su.user_id = ps_salary.user_id and su.nick_name like %"+bo.getName()+"%");
|
lqw.exists(StringUtils.isNotBlank(bo.getName()),"select 1 from sys_user su where su.user_id = ps_salary.user_id and su.nick_name like %"+bo.getName()+"%");
|
||||||
return lqw;
|
return lqw;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 提成关联合同查询
|
||||||
|
* @param id
|
||||||
|
* @param status
|
||||||
|
* @param pageQuery
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public TableDataInfo<PsSalaryContractVo> queryContractPageList(Long id, String status, PageQuery pageQuery){
|
||||||
|
Page<PsSalaryContractVo> result = salaryContractMapper.selectVoPage( pageQuery.build(),Wrappers.<PsSalaryContract>lambdaQuery()
|
||||||
|
.eq(PsSalaryContract::getSalaryId ,id)
|
||||||
|
.eq(StringUtils.isNotBlank(status),PsSalaryContract::getStatus,status));
|
||||||
|
return TableDataInfo.build(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
|
@ -305,7 +305,7 @@ public class PsTaskServiceImpl implements IPsTaskService {
|
|||||||
* @param id 任务主键id
|
* @param id 任务主键id
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public void finishMain(Long id){
|
public String finishMain(Long id){
|
||||||
PsTaskMain main = baseMapper.selectById(id);
|
PsTaskMain main = baseMapper.selectById(id);
|
||||||
if(!TaskStatusEnum.canFinish(main.getTaskStatus())){
|
if(!TaskStatusEnum.canFinish(main.getTaskStatus())){
|
||||||
throw new ServiceException("此任务无法执行此操作,请刷新页面后重新操作");
|
throw new ServiceException("此任务无法执行此操作,请刷新页面后重新操作");
|
||||||
@ -318,6 +318,7 @@ public class PsTaskServiceImpl implements IPsTaskService {
|
|||||||
}
|
}
|
||||||
main.setTaskStatus(TaskStatusEnum.FINISH.getCode());
|
main.setTaskStatus(TaskStatusEnum.FINISH.getCode());
|
||||||
baseMapper.updateById(main);
|
baseMapper.updateById(main);
|
||||||
|
return main.getContractCode();
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 子任务完成
|
* 子任务完成
|
||||||
|
@ -46,4 +46,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<include refid="queryContractList"/>
|
<include refid="queryContractList"/>
|
||||||
${ew.getCustomSqlSegment}
|
${ew.getCustomSqlSegment}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="querySalaryListByCodes" resultType="com.pusong.business.domain.PsSalaryContract">
|
||||||
|
select
|
||||||
|
info.contract_code
|
||||||
|
,info.custom_manager
|
||||||
|
,cus.custom_name
|
||||||
|
,cus.custom_mobile
|
||||||
|
,com.company_name
|
||||||
|
,info.contract_amount
|
||||||
|
,info.start_service_date service_start_date
|
||||||
|
from ps_contract_info info
|
||||||
|
left join ps_custom_info cus on info.custom_id = cus.id
|
||||||
|
left join ps_company_info com on info.company_id = com.id
|
||||||
|
${ew.getCustomSqlSegment}
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE mapper
|
||||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.pusong.business.mapper.PsSalaryContractMapper">
|
||||||
|
|
||||||
|
</mapper>
|
Loading…
Reference in New Issue
Block a user