薪酬列表分页问题

This commit is contained in:
mx 2024-11-27 17:07:51 +08:00
parent eab0fb95dd
commit c2df4242ce
12 changed files with 160 additions and 62 deletions

View File

@ -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;
} }

View File

@ -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;
} }

View File

@ -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,
@ -122,7 +122,7 @@ public class CalSalaryBatch {
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("员工提成批处理结束");

View File

@ -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);
} }
// /** // /**

View File

@ -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;
} }

View File

@ -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;
/** /**
* 员工岗位 * 员工岗位
*/ */

View File

@ -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);

View File

@ -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);
} }

View File

@ -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);
// /** // /**
// * 查询员工提成提成 // * 查询员工提成提成

View File

@ -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;
if (id == null){
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(PsSalaryContract::getSalaryId, id)
.eq(StringUtils.isNotBlank(status), PsSalaryContract::getStatus, status)); .eq(StringUtils.isNotBlank(status), PsSalaryContract::getStatus, status));
}
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }

View File

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

View File

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