薪酬列表分页问题
This commit is contained in:
parent
eab0fb95dd
commit
c2df4242ce
@ -60,7 +60,7 @@ public class MybatisPlusConfig {
|
|||||||
public PaginationInnerInterceptor paginationInnerInterceptor() {
|
public PaginationInnerInterceptor paginationInnerInterceptor() {
|
||||||
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
|
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
|
||||||
// 分页合理化
|
// 分页合理化
|
||||||
paginationInnerInterceptor.setOverflow(true);
|
paginationInnerInterceptor.setOverflow(false);
|
||||||
return paginationInnerInterceptor;
|
return paginationInnerInterceptor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,7 +21,10 @@ public class TableDataInfo<T> implements Serializable {
|
|||||||
|
|
||||||
@Serial
|
@Serial
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
/**
|
||||||
|
* 当前页
|
||||||
|
*/
|
||||||
|
private long current;
|
||||||
/**
|
/**
|
||||||
* 总记录数
|
* 总记录数
|
||||||
*/
|
*/
|
||||||
@ -59,6 +62,7 @@ public class TableDataInfo<T> implements Serializable {
|
|||||||
rspData.setMsg("查询成功");
|
rspData.setMsg("查询成功");
|
||||||
rspData.setRows(page.getRecords());
|
rspData.setRows(page.getRecords());
|
||||||
rspData.setTotal(page.getTotal());
|
rspData.setTotal(page.getTotal());
|
||||||
|
rspData.setCurrent(page.getCurrent());
|
||||||
return rspData;
|
return rspData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,15 +5,14 @@ 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.*;
|
import com.pusong.business.domain.*;
|
||||||
import com.pusong.business.domain.vo.PsContractBusinessDetailVo;
|
import com.pusong.business.domain.vo.*;
|
||||||
import com.pusong.business.domain.vo.PsContractBusinessVo;
|
|
||||||
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.*;
|
import com.pusong.business.mapper.*;
|
||||||
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.MapstructUtils;
|
||||||
import com.pusong.common.core.utils.StringUtils;
|
import com.pusong.common.core.utils.StringUtils;
|
||||||
import com.pusong.system.domain.SysUser;
|
import com.pusong.system.domain.SysUser;
|
||||||
import com.pusong.system.domain.SysUserPost;
|
import com.pusong.system.domain.SysUserPost;
|
||||||
@ -81,18 +80,18 @@ public class CalSalaryBatch {
|
|||||||
calcData(deadline, thisMonth, true);
|
calcData(deadline, thisMonth, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<PsSalary> calcData(Temporal deadline, LocalDate thisMonth, boolean save){
|
public List<PsSalaryVo> calcData(Temporal deadline, LocalDate thisMonth, boolean save){
|
||||||
|
|
||||||
List<PsSalary> psSalaryList = new ArrayList<>();
|
List<PsSalaryVo> psSalaryList = new ArrayList<>();
|
||||||
//删除该月历史数据
|
//删除该月历史数据
|
||||||
psSalaryMapper.delete(Wrappers.<PsSalary>lambdaQuery().eq(PsSalary::getSalaryMonth, DateUtils.toString(thisMonth,"yyyy-MM")));
|
psSalaryMapper.delete(Wrappers.<PsSalary>lambdaQuery().eq(PsSalary::getSalaryMonth, DateUtils.toString(thisMonth,"yyyy-MM")));
|
||||||
log.info("查询所有员工");
|
log.info("查询所有员工");
|
||||||
List<SysUser> list = sysUserMapper.selectList(Wrappers.<SysUser>lambdaQuery().select(SysUser::getUserId).eq(SysUser::getStatus, 0));
|
List<SysUser> list = sysUserMapper.selectList(Wrappers.<SysUser>lambdaQuery().select(SysUser::getUserId, SysUser::getNickName).eq(SysUser::getStatus, 0));
|
||||||
log.info("查询所有员工{}", list.size());
|
log.info("查询所有员工{}", list.size());
|
||||||
|
|
||||||
log.info("查询符合条件的合同");
|
log.info("查询符合条件的合同");
|
||||||
//当月新签+当月之前未完成合同数 = 全部合同 - 完成时间在当月之前的
|
//当月新签+当月之前未完成合同数 = 全部合同 - 完成时间在当月之前的
|
||||||
List<PsContractInfo> contractInfos = psContractInfoMapper.selectList(Wrappers.<PsContractInfo>lambdaQuery()
|
List<PsSalaryContractVo> contractInfos = psContractInfoMapper.querySalaryListByCodes(Wrappers.<PsContractInfo>lambdaQuery()
|
||||||
.ne(PsContractInfo::getIsCancel, CommonStatusEnum.SUCCESS.getCode())
|
.ne(PsContractInfo::getIsCancel, CommonStatusEnum.SUCCESS.getCode())
|
||||||
.and(wq -> wq.le(PsContractInfo::getFinishDate, deadline).or().isNull(PsContractInfo::getFinishDate)));
|
.and(wq -> wq.le(PsContractInfo::getFinishDate, deadline).or().isNull(PsContractInfo::getFinishDate)));
|
||||||
|
|
||||||
@ -100,13 +99,14 @@ public class CalSalaryBatch {
|
|||||||
// .ne(PsContractInfo::getIsCancel, CommonStatusEnum.SUCCESS.getCode())
|
// .ne(PsContractInfo::getIsCancel, CommonStatusEnum.SUCCESS.getCode())
|
||||||
// .between(PsContractInfo::getFinishDate, firstDayOfLastMonth, lastDayOfLastMonth));
|
// .between(PsContractInfo::getFinishDate, firstDayOfLastMonth, lastDayOfLastMonth));
|
||||||
log.info("查询本月所有的合同{}", contractInfos.size());
|
log.info("查询本月所有的合同{}", contractInfos.size());
|
||||||
List<PsContractInfo> finists = contractInfos.stream().filter(item -> StringUtils.equals(item.getContractStatus(), ContractStatusEnum.SUCCESS.getCode())).toList();
|
List<PsSalaryContractVo> finists = contractInfos.stream().filter(item -> StringUtils.equals(item.getContractStatus(), ContractStatusEnum.SUCCESS.getCode())).toList();
|
||||||
List<PsContractInfo> unfinists = contractInfos.stream().filter(item -> !StringUtils.equals(item.getContractStatus(), ContractStatusEnum.SUCCESS.getCode())).toList();
|
List<PsSalaryContractVo> unfinists = contractInfos.stream().filter(item -> !StringUtils.equals(item.getContractStatus(), ContractStatusEnum.SUCCESS.getCode())).toList();
|
||||||
log.info("本月已完成合同数量{},未完成数量{}", finists.size(),unfinists.size());
|
log.info("本月已完成合同数量{},未完成数量{}", finists.size(),unfinists.size());
|
||||||
|
|
||||||
//转换 客户经理有的合同编码
|
//转换 客户经理有的合同编码
|
||||||
Map<Long, List<PsContractInfo>> finistMap = finists.stream().collect(Collectors.groupingBy(PsContractInfo::getCustomManager,Collectors.toList()));
|
Map<Long, List<PsSalaryContractVo>> finistMap = finists.stream().collect(Collectors.groupingBy(PsSalaryContractVo::getCustomManager, Collectors.toList()));
|
||||||
Map<Long, List<PsContractInfo>> unfinistMap = unfinists.stream().collect(Collectors.groupingBy(PsContractInfo::getCustomManager,Collectors.toList()));;
|
Map<Long, List<PsSalaryContractVo>> unfinistMap = unfinists.stream().collect(Collectors.groupingBy(PsSalaryContractVo::getCustomManager, Collectors.toList()));;
|
||||||
|
|
||||||
//查询所有岗位配置信息
|
//查询所有岗位配置信息
|
||||||
List<PsSalaryConfig> configs = psSalaryConfigMapper.selectList();
|
List<PsSalaryConfig> configs = psSalaryConfigMapper.selectList();
|
||||||
Map<Long, Map<String, BigDecimal>> configMap = configs.stream().collect(Collectors.groupingBy(PsSalaryConfig::getPostId,
|
Map<Long, Map<String, BigDecimal>> configMap = configs.stream().collect(Collectors.groupingBy(PsSalaryConfig::getPostId,
|
||||||
@ -117,12 +117,12 @@ public class CalSalaryBatch {
|
|||||||
for (SysUser user : list){
|
for (SysUser user : list){
|
||||||
Long userId = user.getUserId();
|
Long userId = user.getUserId();
|
||||||
//默认员工仅有一个岗位
|
//默认员工仅有一个岗位
|
||||||
log.info("查询员工岗位{}",userId);
|
log.info("查询员工岗位{}", userId);
|
||||||
SysUserPost post = sysUserPostMapper.selectOne(new LambdaQueryWrapper<SysUserPost>().eq(SysUserPost::getUserId, userId).last("limit 1"));
|
SysUserPost post = sysUserPostMapper.selectOne(new LambdaQueryWrapper<SysUserPost>().eq(SysUserPost::getUserId, userId).last("limit 1"));
|
||||||
if(post == null){continue;}
|
if(post == null){continue;}
|
||||||
log.info("查询员工岗位{}",post.getPostId());
|
log.info("查询员工岗位{}", post.getPostId());
|
||||||
//已完成合同的合同编码
|
//已完成合同的合同编码
|
||||||
List<String> codeList = new ArrayList<>(finistMap.get(userId) == null ? new ArrayList<>() : finistMap.get(userId).stream().map(PsContractInfo::getContractCode).toList());
|
List<String> codeList = new ArrayList<>(finistMap.get(userId) == null ? new ArrayList<>() : finistMap.get(userId).stream().map(PsSalaryContractVo::getContractCode).toList());
|
||||||
//服务列表
|
//服务列表
|
||||||
List<PsContractBusinessVo> busin = businessService.selectBusinessList(codeList);
|
List<PsContractBusinessVo> busin = businessService.selectBusinessList(codeList);
|
||||||
//所有合同的退款列表
|
//所有合同的退款列表
|
||||||
@ -157,52 +157,74 @@ public class CalSalaryBatch {
|
|||||||
psSalary.setUnfinistContractNum(unFinishNum);
|
psSalary.setUnfinistContractNum(unFinishNum);
|
||||||
//已完成合同金额
|
//已完成合同金额
|
||||||
BigDecimal finishMoney = CollectionUtils.isEmpty(finistMap.get(userId))?BigDecimal.ZERO:
|
BigDecimal finishMoney = CollectionUtils.isEmpty(finistMap.get(userId))?BigDecimal.ZERO:
|
||||||
finistMap.get(userId).stream().map(PsContractInfo::getContractAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
finistMap.get(userId).stream().map(PsSalaryContractVo::getContractAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
//未完成合同金额
|
//未完成合同金额
|
||||||
BigDecimal unFinishMoney = CollectionUtils.isEmpty(unfinistMap.get(userId))?BigDecimal.ZERO:
|
BigDecimal unFinishMoney = CollectionUtils.isEmpty(unfinistMap.get(userId))?BigDecimal.ZERO:
|
||||||
unfinistMap.get(userId).stream().map(PsContractInfo::getContractAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);;
|
unfinistMap.get(userId).stream().map(PsSalaryContractVo::getContractAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);;
|
||||||
psSalary.setContractMoney(finishMoney.add(unFinishMoney));
|
psSalary.setContractMoney(finishMoney.add(unFinishMoney));
|
||||||
psSalary.setFinistContractMoney(finishMoney);
|
psSalary.setFinistContractMoney(finishMoney);
|
||||||
psSalary.setUnfinistContractMoney(unFinishMoney);
|
psSalary.setUnfinistContractMoney(unFinishMoney);
|
||||||
|
|
||||||
if (!save){
|
if (!save){
|
||||||
psSalaryList.add(psSalary);
|
PsSalaryVo convert = MapstructUtils.convert(psSalary, PsSalaryVo.class);
|
||||||
|
convert.setNickName(user.getNickName());
|
||||||
|
psSalaryList.add(convert);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
//已完成合同编码
|
//已完成合同编码
|
||||||
List<String> finCode = new ArrayList<>();
|
List<PsSalaryContractVo> finCode = new ArrayList<>();
|
||||||
//未完成合同编码
|
//未完成合同编码
|
||||||
List<String> unfinCode = new ArrayList<>();
|
List<PsSalaryContractVo> unfinCode = new ArrayList<>();
|
||||||
if(CollectionUtils.isNotEmpty(finistMap.get(userId))){
|
if(CollectionUtils.isNotEmpty(finistMap.get(userId))){
|
||||||
finCode = finistMap.get(userId).stream().map(PsContractInfo::getContractCode).toList();
|
finCode = finistMap.get(userId);
|
||||||
}
|
}
|
||||||
if(CollectionUtils.isNotEmpty(unfinistMap.get(userId))){
|
if(CollectionUtils.isNotEmpty(unfinistMap.get(userId))){
|
||||||
unfinCode = unfinistMap.get(userId).stream().map(PsContractInfo::getContractCode).toList();
|
unfinCode = unfinistMap.get(userId);
|
||||||
}
|
}
|
||||||
// psSalary.setFinishContractCode(String.join(",",finCode));
|
// psSalary.setFinishContractCode(String.join(",",finCode));
|
||||||
// psSalary.setUnfinishContractCode(String.join(",",unfinCode));
|
// psSalary.setUnfinishContractCode(String.join(",",unfinCode));
|
||||||
|
|
||||||
psSalaryMapper.insert(psSalary);
|
psSalaryMapper.insert(psSalary);
|
||||||
List<PsSalaryContract> lis = new ArrayList<>();
|
List<PsSalaryContract> lis = new ArrayList<>();
|
||||||
|
|
||||||
if(CollectionUtils.isNotEmpty(finCode)) {
|
if(CollectionUtils.isNotEmpty(finCode)) {
|
||||||
List<PsSalaryContract> fin = psContractInfoMapper.querySalaryListByCodes(new QueryWrapper<PsContractInfo>().in("info.contract_code", finCode));
|
PsSalaryContract psSalaryContract;
|
||||||
if(CollectionUtils.isNotEmpty(fin)) {
|
for (PsSalaryContractVo psContractInfo : finCode) {
|
||||||
fin.forEach(item->{item.setStatus("1");item.setSalaryId(psSalary.getId());});
|
psSalaryContract = MapstructUtils.convert(psContractInfo, PsSalaryContract.class);
|
||||||
lis.addAll(fin);
|
|
||||||
|
psSalaryContract.setStatus("1");
|
||||||
|
psSalaryContract.setSalaryId(psSalary.getId());
|
||||||
|
psSalaryContract.setUserId(user.getUserId());
|
||||||
|
psSalaryContract.setSalaryRatioDate(DateUtils.toDate(thisMonth));
|
||||||
|
|
||||||
|
lis.add(psSalaryContract);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// List<PsSalaryContract> fin = psContractInfoMapper.querySalaryListByCodes(new QueryWrapper<PsContractInfo>().in("info.contract_code", finCode));
|
||||||
|
// if(CollectionUtils.isNotEmpty(fin)) {
|
||||||
|
// fin.forEach(item->{item.setStatus("1");item.setSalaryId(psSalary.getId());});
|
||||||
|
// lis.addAll(fin);
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
if(CollectionUtils.isNotEmpty(unfinCode)) {
|
if(CollectionUtils.isNotEmpty(unfinCode)) {
|
||||||
List<PsSalaryContract> unfin = psContractInfoMapper.querySalaryListByCodes(new QueryWrapper<PsContractInfo>().in("info.contract_code", unfinCode));
|
// List<PsSalaryContract> unfin = psContractInfoMapper.querySalaryListByCodes(new QueryWrapper<PsContractInfo>().in("info.contract_code", unfinCode));
|
||||||
if(CollectionUtils.isNotEmpty(unfin)) {
|
// if(CollectionUtils.isNotEmpty(unfin)) {
|
||||||
unfin.forEach(item->{item.setStatus("2");item.setSalaryId(psSalary.getId());});
|
// unfin.forEach(item->{item.setStatus("2");item.setSalaryId(psSalary.getId());});
|
||||||
lis.addAll(unfin);
|
// lis.addAll(unfin);
|
||||||
|
// }
|
||||||
|
PsSalaryContract psSalaryContract;
|
||||||
|
for (PsSalaryContractVo psContractInfo : unfinCode) {
|
||||||
|
psSalaryContract = MapstructUtils.convert(psContractInfo, PsSalaryContract.class);
|
||||||
|
psSalaryContract.setStatus("2");
|
||||||
|
psSalaryContract.setSalaryId(psSalary.getId());
|
||||||
|
psSalaryContract.setUserId(user.getUserId());
|
||||||
|
psSalaryContract.setSalaryRatioDate(DateUtils.toDate(thisMonth));
|
||||||
|
|
||||||
|
lis.add(psSalaryContract);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lis.forEach(item -> {
|
|
||||||
item.setUserId(user.getUserId());
|
|
||||||
item.setSalaryRatioDate(DateUtils.toDate(thisMonth));
|
|
||||||
});
|
|
||||||
salaryContractMapper.insertBatch(lis);
|
salaryContractMapper.insertBatch(lis);
|
||||||
}
|
}
|
||||||
log.info("员工提成批处理结束");
|
log.info("员工提成批处理结束");
|
||||||
|
@ -60,8 +60,8 @@ public class PsSalaryController extends BaseController {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@GetMapping("/queryContractPageList")
|
@GetMapping("/queryContractPageList")
|
||||||
public TableDataInfo<PsSalaryContractVo> queryContractPageList(Long id, String status, PageQuery pageQuery) {
|
public TableDataInfo<PsSalaryContractVo> queryContractPageList(Long id, Long userId, String status, PageQuery pageQuery) {
|
||||||
return psSalaryService.queryContractPageList(id, status, pageQuery);
|
return psSalaryService.queryContractPageList(id, userId, status, pageQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
|
@ -2,6 +2,8 @@ package com.pusong.business.domain.vo;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import com.pusong.business.domain.PsSalaryContract;
|
import com.pusong.business.domain.PsSalaryContract;
|
||||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
@ -90,4 +92,8 @@ public class PsSalaryContractVo implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private String status;
|
private String status;
|
||||||
|
|
||||||
|
|
||||||
|
private String contractStatus;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -41,8 +41,13 @@ public class PsSalaryVo implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 员工id
|
* 员工id
|
||||||
*/
|
*/
|
||||||
@Translation(type = TransConstant.USER_ID_TO_NICKNAME)
|
|
||||||
private Long userId;
|
private Long userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 员工id
|
||||||
|
*/
|
||||||
|
private String nickName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 员工岗位
|
* 员工岗位
|
||||||
*/
|
*/
|
||||||
|
@ -50,7 +50,9 @@ 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);
|
Page<PsSalaryContractVo> querySalaryListByCodes(@Param("page") Page<PsContractInfo> page, @Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
|
||||||
|
|
||||||
|
List<PsSalaryContractVo> 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> getUserContractSourceAmountsByDeptId(@Param("queryParam") Map<String, Object> queryParam, @Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
|
List<UserContractAmountInfo> getUserContractSourceAmountsByDeptId(@Param("queryParam") Map<String, Object> queryParam, @Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
|
||||||
|
@ -1,8 +1,14 @@
|
|||||||
package com.pusong.business.mapper;
|
package com.pusong.business.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.pusong.business.domain.PsContractInfo;
|
||||||
import com.pusong.business.domain.PsSalary;
|
import com.pusong.business.domain.PsSalary;
|
||||||
|
import com.pusong.business.domain.vo.PsSalaryContractVo;
|
||||||
import com.pusong.business.domain.vo.PsSalaryVo;
|
import com.pusong.business.domain.vo.PsSalaryVo;
|
||||||
import com.pusong.common.mybatis.core.mapper.BaseMapperPlus;
|
import com.pusong.common.mybatis.core.mapper.BaseMapperPlus;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 员工提成提成Mapper接口
|
* 员工提成提成Mapper接口
|
||||||
@ -11,5 +17,6 @@ import com.pusong.common.mybatis.core.mapper.BaseMapperPlus;
|
|||||||
* @date 2024-08-23
|
* @date 2024-08-23
|
||||||
*/
|
*/
|
||||||
public interface PsSalaryMapper extends BaseMapperPlus<PsSalary, PsSalaryVo> {
|
public interface PsSalaryMapper extends BaseMapperPlus<PsSalary, PsSalaryVo> {
|
||||||
|
Page<PsSalaryVo> querySalaryList(@Param("page") Page<PsContractInfo> page, @Param(Constants.WRAPPER) Wrapper<PsSalary> queryWrapper);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ public interface IPsSalaryService {
|
|||||||
* @param pageQuery
|
* @param pageQuery
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
TableDataInfo<PsSalaryContractVo> queryContractPageList(Long id, String status, PageQuery pageQuery);
|
TableDataInfo<PsSalaryContractVo> queryContractPageList(Long id, Long customManagerId, String status, PageQuery pageQuery);
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
// * 查询员工提成提成
|
// * 查询员工提成提成
|
||||||
|
@ -1,9 +1,13 @@
|
|||||||
package com.pusong.business.service.impl;
|
package com.pusong.business.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.pusong.business.batch.CalSalaryBatch;
|
import com.pusong.business.batch.CalSalaryBatch;
|
||||||
|
import com.pusong.business.domain.PsContractInfo;
|
||||||
import com.pusong.business.domain.PsCustomPrice;
|
import com.pusong.business.domain.PsCustomPrice;
|
||||||
import com.pusong.business.domain.PsSalaryContract;
|
import com.pusong.business.domain.PsSalaryContract;
|
||||||
import com.pusong.business.domain.vo.PsSalaryContractVo;
|
import com.pusong.business.domain.vo.PsSalaryContractVo;
|
||||||
|
import com.pusong.business.enums.CommonStatusEnum;
|
||||||
|
import com.pusong.business.mapper.PsContractInfoMapper;
|
||||||
import com.pusong.business.mapper.PsSalaryContractMapper;
|
import com.pusong.business.mapper.PsSalaryContractMapper;
|
||||||
import com.pusong.common.core.utils.DateUtils;
|
import com.pusong.common.core.utils.DateUtils;
|
||||||
import com.pusong.common.core.utils.MapstructUtils;
|
import com.pusong.common.core.utils.MapstructUtils;
|
||||||
@ -24,10 +28,7 @@ import com.pusong.business.service.IPsSalaryService;
|
|||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Collection;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 员工提成提成Service业务层处理
|
* 员工提成提成Service业务层处理
|
||||||
@ -42,7 +43,11 @@ public class PsSalaryServiceImpl implements IPsSalaryService {
|
|||||||
private final PsSalaryMapper baseMapper;
|
private final PsSalaryMapper baseMapper;
|
||||||
private final PsSalaryContractMapper salaryContractMapper;
|
private final PsSalaryContractMapper salaryContractMapper;
|
||||||
|
|
||||||
|
private final PsContractInfoMapper psContractInfoMapper;
|
||||||
|
|
||||||
private final CalSalaryBatch calSalaryBatch;
|
private final CalSalaryBatch calSalaryBatch;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页查询员工提成提成列表
|
* 分页查询员工提成提成列表
|
||||||
*
|
*
|
||||||
@ -52,29 +57,54 @@ public class PsSalaryServiceImpl implements IPsSalaryService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public TableDataInfo<PsSalaryVo> queryPageList(PsSalaryBo bo, PageQuery pageQuery) {
|
public TableDataInfo<PsSalaryVo> queryPageList(PsSalaryBo bo, PageQuery pageQuery) {
|
||||||
LambdaQueryWrapper<PsSalary> lqw = buildQueryWrapper(bo);
|
QueryWrapper<PsSalary> lqw = buildQueryWrapper(bo);
|
||||||
Page<PsSalaryVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
lqw.eq("salary.del_flag", 0);
|
||||||
|
Page<PsSalaryVo> result = baseMapper.querySalaryList(pageQuery.build(), lqw);
|
||||||
|
|
||||||
|
|
||||||
if (bo.getStartDate().getTime() <= DateUtils.getFirstDayZeroTimeByMonth().getTime() && bo.getEndDate().getTime() >= DateUtils.getFirstDayZeroTimeByMonth().getTime()){
|
if (bo.getStartDate().getTime() <= DateUtils.getFirstDayZeroTimeByMonth().getTime() && bo.getEndDate().getTime() >= DateUtils.getFirstDayZeroTimeByMonth().getTime()){
|
||||||
LocalDateTime deadline = bo.getEndDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
|
LocalDateTime deadline = bo.getEndDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
|
||||||
LocalDate thisMonth = LocalDate.now();
|
LocalDate thisMonth = LocalDate.now();
|
||||||
List<PsSalary> psSalaries = calSalaryBatch.calcData(deadline, thisMonth, false);
|
List<PsSalaryVo> adds = calSalaryBatch.calcData(deadline, thisMonth, false);
|
||||||
List<PsSalaryVo> adds = MapstructUtils.convert(psSalaries, PsSalaryVo.class);
|
|
||||||
|
|
||||||
List<PsSalaryVo> records= new ArrayList<>();
|
List<PsSalaryVo> records= new ArrayList<>();
|
||||||
records.addAll(result.getRecords());
|
records.addAll(result.getRecords());
|
||||||
records.addAll(adds);
|
|
||||||
result.setRecords(records);
|
|
||||||
result.setTotal(result.getTotal() + adds.size());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// long diffNum = result.getSize() - result.getRecords().size();
|
||||||
|
// diffNum = diffNum > adds.size() ? adds.size() : diffNum;
|
||||||
|
//
|
||||||
|
// long remainder = result.getTotal() % result.getPages();
|
||||||
|
// long replenishment = result.getPages() - remainder;
|
||||||
|
// long maxPage = result.getTotal() / result.getPages() + 1;
|
||||||
|
|
||||||
|
|
||||||
|
if (result.getTotal() < pageQuery.getPageNum() * result.getSize()){
|
||||||
|
//需要补本月的
|
||||||
|
long diffNum = pageQuery.getPageNum() * result.getSize() - result.getTotal();//到该页结尾总共需要补多少
|
||||||
|
|
||||||
|
int startIndex;
|
||||||
|
int endIndex;
|
||||||
|
if (diffNum >= result.getSize()){
|
||||||
|
startIndex = (int)(diffNum - result.getSize());
|
||||||
|
endIndex = startIndex + (int)result.getSize();
|
||||||
|
}else{
|
||||||
|
startIndex = 0;
|
||||||
|
endIndex = (int)diffNum;
|
||||||
|
}
|
||||||
|
endIndex = endIndex > adds.size() ? adds.size() : endIndex;
|
||||||
|
|
||||||
|
records.addAll(adds.subList(startIndex, endIndex));
|
||||||
|
result.setRecords(records);
|
||||||
|
}
|
||||||
|
result.setTotal(result.getTotal() + adds.size());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
return TableDataInfo.build(result);
|
return TableDataInfo.build(result);
|
||||||
}
|
}
|
||||||
private LambdaQueryWrapper<PsSalary> buildQueryWrapper(PsSalaryBo bo) {
|
private QueryWrapper<PsSalary> buildQueryWrapper(PsSalaryBo bo) {
|
||||||
LambdaQueryWrapper<PsSalary> lqw = Wrappers.lambdaQuery();
|
QueryWrapper<PsSalary> lqw = new QueryWrapper<PsSalary>();
|
||||||
lqw.le(bo.getEndDate() != null,PsSalary::getSalaryDate,bo.getEndDate());
|
lqw.le(bo.getEndDate() != null, "salary_date", bo.getEndDate());
|
||||||
lqw.ge(bo.getStartDate() != null,PsSalary::getSalaryDate,bo.getStartDate());
|
lqw.ge(bo.getStartDate() != null, "salary_date", bo.getStartDate());
|
||||||
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;
|
||||||
}
|
}
|
||||||
@ -85,10 +115,23 @@ public class PsSalaryServiceImpl implements IPsSalaryService {
|
|||||||
* @param pageQuery
|
* @param pageQuery
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public TableDataInfo<PsSalaryContractVo> queryContractPageList(Long id, String status, PageQuery pageQuery){
|
public TableDataInfo<PsSalaryContractVo> queryContractPageList(Long id, Long customManagerId, String status, PageQuery pageQuery){
|
||||||
Page<PsSalaryContractVo> result = salaryContractMapper.selectVoPage( pageQuery.build(),Wrappers.<PsSalaryContract>lambdaQuery()
|
Page<PsSalaryContractVo> result;
|
||||||
.eq(PsSalaryContract::getSalaryId ,id)
|
if (id == null){
|
||||||
.eq(StringUtils.isNotBlank(status),PsSalaryContract::getStatus,status));
|
LocalDateTime deadline = DateUtils.getEndTimeByMonth(new Date()).toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
|
||||||
|
|
||||||
|
QueryWrapper<PsContractInfo> wrapper = new QueryWrapper<PsContractInfo>()
|
||||||
|
.ne("is_cancel", CommonStatusEnum.SUCCESS.getCode())
|
||||||
|
.and(wq -> wq.le("finish_date", deadline).or().isNull("finish_date"))
|
||||||
|
.eq("info.custom_manager", customManagerId);
|
||||||
|
|
||||||
|
result = psContractInfoMapper.querySalaryListByCodes(pageQuery.build(), wrapper);
|
||||||
|
} else{
|
||||||
|
result = salaryContractMapper.selectVoPage(pageQuery.build(), Wrappers.<PsSalaryContract>lambdaQuery()
|
||||||
|
.eq(PsSalaryContract::getSalaryId, id)
|
||||||
|
.eq(StringUtils.isNotBlank(status), PsSalaryContract::getStatus, status));
|
||||||
|
}
|
||||||
|
|
||||||
return TableDataInfo.build(result);
|
return TableDataInfo.build(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
${ew.getCustomSqlSegment}
|
${ew.getCustomSqlSegment}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="querySalaryListByCodes" resultType="com.pusong.business.domain.PsSalaryContract">
|
<select id="querySalaryListByCodes" resultType="com.pusong.business.domain.vo.PsSalaryContractVo">
|
||||||
select
|
select
|
||||||
info.contract_code
|
info.contract_code
|
||||||
,info.custom_manager
|
,info.custom_manager
|
||||||
@ -66,6 +66,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
,com.company_name
|
,com.company_name
|
||||||
,info.contract_amount
|
,info.contract_amount
|
||||||
,info.start_service_date service_start_date
|
,info.start_service_date service_start_date
|
||||||
|
,info.contract_status
|
||||||
from ps_contract_info info
|
from ps_contract_info info
|
||||||
left join ps_custom_info cus on info.custom_id = cus.id
|
left join ps_custom_info cus on info.custom_id = cus.id
|
||||||
left join ps_company_info com on info.company_id = com.id
|
left join ps_company_info com on info.company_id = com.id
|
||||||
|
@ -3,5 +3,13 @@
|
|||||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.pusong.business.mapper.PsSalaryMapper">
|
<mapper namespace="com.pusong.business.mapper.PsSalaryMapper">
|
||||||
|
<select id="querySalaryList" resultType="com.pusong.business.domain.vo.PsSalaryVo">
|
||||||
|
select
|
||||||
|
salary.*, usr.nick_name
|
||||||
|
from ps_salary salary
|
||||||
|
left join sys_user usr on usr.user_id = salary.user_id
|
||||||
|
${ew.getCustomSqlSegment}
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user