This commit is contained in:
mx 2024-12-02 13:17:28 +08:00
parent 54f8a71d8a
commit 5e932d56af
34 changed files with 345 additions and 91 deletions

View File

@ -48,7 +48,7 @@ public class JacksonConfig {
//去掉最后面的0并转为字符串
// gen.writeString(value.stripTrailingZeros().toPlainString());
//保留两位小数
gen.writeString(value.setScale(2, RoundingMode.HALF_UP).toPlainString());
gen.writeString(value.setScale(0, RoundingMode.HALF_UP).toPlainString());
}
}
});

View File

@ -5,6 +5,7 @@ import java.util.List;
import com.pusong.business.domain.bo.PsContractInfoQueryBo;
import com.pusong.business.domain.bo.PsInvoiceBo;
import com.pusong.business.domain.vo.PsContractBusinessVo;
import com.pusong.business.domain.vo.PsContractCountVo;
import com.pusong.business.domain.vo.ServiceScheduleVo;
import com.pusong.business.service.IPsContractBusinessService;
import com.pusong.common.satoken.utils.LoginHelper;
@ -89,7 +90,16 @@ public class PsContractInfoController extends BaseController {
@SaCheckPermission("business:contractInfo:LIST")
@GetMapping("/list")
public TableDataInfo<PsContractInfoVo> list(PsContractInfoQueryBo bo, PageQuery pageQuery) {
return psContractInfoService.queryPageList(bo, pageQuery);
TableDataInfo<PsContractInfoVo> psContractInfoVoTableDataInfo = psContractInfoService.queryPageList(bo, pageQuery);
PsContractCountVo contractCountVo = psContractInfoService.countContractInfo(bo);
return psContractInfoVoTableDataInfo;
}
@SaCheckPermission("business:contractInfo:LIST")
@GetMapping("/countContractInfo")
public R<PsContractCountVo> countContractInfo(PsContractInfoQueryBo bo, PageQuery pageQuery) {
PsContractCountVo contractCountVo = psContractInfoService.countContractInfo(bo);
return R.ok(contractCountVo);
}
/**

View File

@ -50,8 +50,8 @@ public class PsCustomController extends BaseController {
@SaCheckPermission("business:customInfo:list")
@GetMapping("/listByLoginUser")
public R<List<Map<String,Object>>> listByLoginUser(String name) {
return R.ok(psCustomInfoService.listByLoginUser(name));
public R<List<Map<String,Object>>> listByLoginUser(String name, PageQuery pageQuery) {
return R.ok(psCustomInfoService.listByLoginUser(name, pageQuery));
}
/**
* 查询客户信息列表

View File

@ -42,6 +42,11 @@ public class PsContractCompany extends TenantEntity {
*/
private Long delFlag;
/**
* 工单备注
*/
private String taskRemark;
}

View File

@ -245,4 +245,10 @@ public class PsCompanyInfoBo {
this.businessAmount = businessList == null ? new BigDecimal(0) : businessList.stream().map(PsContractBusinessBo::getBusinessAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
return this.businessAmount;
}
/**
* 工单备注
*/
private String taskRemark;
}

View File

@ -163,6 +163,7 @@ public class PsContractInfoBo {
*/
private int firstPartyType;
public enum FIRSTPARTYTYPE{
COMPANY(1),
INDIVIDUALS(2);

View File

@ -0,0 +1,13 @@
package com.pusong.business.domain.vo;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class ContractAmountVo {
private String contractCode;
/**
* 合同金额
*/
private BigDecimal contractAmount;
}

View File

@ -0,0 +1,56 @@
package com.pusong.business.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pusong.business.domain.PsContractInfo;
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.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* 合同基本信息视图对象 ps_contract_info
*
* @author wls
* @date 2024-07-29
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = PsContractInfo.class)
public class PsContractCountVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 合同总金额
*/
private BigDecimal contractAmount;
/**
* 已付金额
*/
private BigDecimal payMoney;
/**
* 退款金额
*/
private BigDecimal returnMoney;
/**
* 未付金额 = 所有已有回款合同的总金额 - 所有已有回款合同的已回款金额
*/
private BigDecimal residualMoney;
/**
* 待付金额 = 所有没有回款合同的总金额
*/
private BigDecimal waitPayMoney;
}

View File

@ -289,4 +289,7 @@ public class PsContractInfoVo implements Serializable {
}
return false;
}
private PsContractCountVo psContractCountVo;
}

View File

@ -178,5 +178,10 @@ public class PsTaskMainVo implements Serializable {
* 工单时间
*/
private Date createTime;
/**
* 工单备注
*/
private String taskRemark;
}

View File

@ -29,13 +29,13 @@ public class ChannelAmountVo {
/**
* 成交总金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal all;
/**
* 总roi
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal roi;
/**

View File

@ -24,7 +24,7 @@ public class ChannelPayInfo {
/**
* 合同金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal contractAmount;
/**
* 支付类型1回款2退款
@ -33,12 +33,12 @@ public class ChannelPayInfo {
/**
* 回款/退款金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal money;
/**
* 成本
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal cost;
}

View File

@ -22,35 +22,35 @@ public class DataAmountVo {
/**
* 合同金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal money;
/**
* 已回款金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal payMoney;
/**
* 未回款金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal unPayMoney;
/**
* 项目成本
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal cost;
/**
* 投入
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal investCapital;
/**
* roi
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal roi;
}

View File

@ -23,7 +23,7 @@ public class MakeAmountVo {
/**
* 成交总金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal all;
/**
* 新签合同信息

View File

@ -26,7 +26,7 @@ public class RenewalInfoVo {
/**
* 到期合同总额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal contractAmount;
/**
@ -42,12 +42,12 @@ public class RenewalInfoVo {
/**
* 已续费金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal payMoney;
/**
* 当月未续费金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal unPayMoney;
/**

View File

@ -23,7 +23,7 @@ public class ReturnAmountVo {
/**
* 成交总金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal all;
/**
* 新签合同信息
@ -56,17 +56,17 @@ public class ReturnAmountVo {
/**
* 合同金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal money;
/**
* 已回款金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal payMoney;
/**
* 未回款金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal unPayMoney;
}

View File

@ -35,17 +35,17 @@ public class ReturnMoneyInfoVo {
/**
* 当月合同回款金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal sumMoney;
/**
* 当月已回款金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal payMoney;
/**
* 当月未回款金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal unPayMoney;
/**

View File

@ -47,19 +47,19 @@ public class SalasVo {
/**
* 已成交总额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal sumContractAmount;
/**
* 已回款金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal payContractAmount;
/**
* 未回款金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal unPayContractAmount;
}

View File

@ -24,43 +24,43 @@ public class UserAmountInfoVo {
/**
* 合同总金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal sumAmount = new BigDecimal(0);
/**
* 已支付总金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal payedSumAmount = new BigDecimal(0);
/**
* 未支付金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal unPaySumAmount = new BigDecimal(0);
/**
* 托管类型合同总金额 类型号:4
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal tuoGuanAmount = new BigDecimal(0);
/**
* 续费类型合同总金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal xuFeiAmount = new BigDecimal(0);
/**
* 软件定制类型合同总金额 类型号:9
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal softwareDevAmount = new BigDecimal(0);
/**
* 其他类型合同总金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal otherAmount = new BigDecimal(0);
/**
* 转介绍的合同金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal jieShaoAmount = new BigDecimal(0);
/**

View File

@ -24,14 +24,9 @@ public class UserAmountVo {
/**
* 成交总金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal all;
/**
* 各人员成交金额
*/

View File

@ -35,17 +35,17 @@ public class UserContractAmountInfo {
/**
* 服务类型金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal businessAmount;
/**
* 客户来源
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private String customSource;
/**
* 合同价格
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal contractAmount;
/**
* payId
@ -54,7 +54,7 @@ public class UserContractAmountInfo {
/**
* 已付款金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal payedMoney;
/**

View File

@ -29,19 +29,19 @@ public class UserContractAmountVo {
/**
* 用户所有合同总金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal sumAmount = new BigDecimal(0);
/**
* 转介绍的合同金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal jieShaoAmount = new BigDecimal(0);
/**
* 其他类型合同总金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal otherAmount = new BigDecimal(0);
/**
* 转介绍合同数量
@ -55,16 +55,16 @@ public class UserContractAmountVo {
/**
* 已支付总金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal jsPayedSumAmount=new BigDecimal(0);
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal otherPayedSumAmount=new BigDecimal(0);
/**
* 未支付金额
*/
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal jsUnPaySumAmount=new BigDecimal(0);
@JsonSerialize(using = BigDecimalSerializer.class)
// @JsonSerialize(using = BigDecimalSerializer.class)
private BigDecimal otherUnPaySumAmount=new BigDecimal(0);
/**

View File

@ -29,6 +29,6 @@ public enum PayStatusEnum {
* @return
*/
public static List<String> getStatus() {
return List.of(PAYAPPO.getCode(),FILE.getCode());
return List.of(FILE.getCode(),PAYAPPO.getCode());
}
}

View File

@ -6,10 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pusong.business.domain.PsContractInfo;
import com.pusong.business.domain.PsCustomInfo;
import com.pusong.business.domain.PsSalaryContract;
import com.pusong.business.domain.vo.PsContractBusinessVo;
import com.pusong.business.domain.vo.PsContractInfoVo;
import com.pusong.business.domain.vo.PsCustomInfoVo;
import com.pusong.business.domain.vo.PsSalaryContractVo;
import com.pusong.business.domain.vo.*;
import com.pusong.business.domain.vo.home.ChannelPayInfo;
import com.pusong.business.domain.vo.home.SalasVo;
import com.pusong.business.domain.vo.home.UserContractAmountInfo;
@ -19,6 +16,7 @@ import com.pusong.common.mybatis.core.mapper.BaseMapperPlus;
import com.pusong.common.mybatis.enums.DataScopeType;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.temporal.Temporal;
import java.util.List;
@ -33,6 +31,18 @@ import java.util.Map;
public interface PsContractInfoMapper extends BaseMapperPlus<PsContractInfo, PsContractInfoVo> {
@DataPermission({
@DataColumn(key = "userName", value = "info.custom_manager"),
@DataColumn(key = "deptName", value = "us.dept_id", dataScopeType = DataScopeType.CAIWU_HETONG)
})
List<ContractAmountVo> selectCountContract(@Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
@DataPermission({
@DataColumn(key = "userName", value = "info.custom_manager"),
@DataColumn(key = "deptName", value = "us.dept_id", dataScopeType = DataScopeType.CAIWU_HETONG)
})
PsContractCountVo selectCountContractPay(@Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
@DataPermission({
@DataColumn(key = "userName", value = "info.custom_manager"),
@DataColumn(key = "deptName", value = "us.dept_id", dataScopeType = DataScopeType.CAIWU_HETONG)

View File

@ -3,6 +3,7 @@ package com.pusong.business.service;
import com.pusong.business.domain.PsContractInfo;
import com.pusong.business.domain.bo.PsContractInfoQueryBo;
import com.pusong.business.domain.bo.PsInvoiceBo;
import com.pusong.business.domain.vo.PsContractCountVo;
import com.pusong.business.domain.vo.PsContractInfoVo;
import com.pusong.business.domain.bo.PsContractInfoBo;
import com.pusong.business.domain.vo.PsSalaryContractVo;
@ -47,6 +48,8 @@ public interface IPsContractInfoService {
PsContractInfoVo queryInfoByCustomId(Long customerId);
void fillMoney(PsContractInfoVo vo);
List<PsContractInfo> queryByCode(Long customId, String code, String status);
PsContractCountVo countContractInfo(PsContractInfoQueryBo bo);
/**
* 分页查询合同基本信息列表
*

View File

@ -31,7 +31,7 @@ public interface IPsCustomInfoService {
* 查询登陆人下所有的客户名称和id
* @return 客户id和姓名
*/
List<Map<String,Object>> listByLoginUser(String name);
List<Map<String,Object>> listByLoginUser(String name, PageQuery pageQuery);
/**
* 分页查询客户基本信息列表
*

View File

@ -328,6 +328,7 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService {
PsContractCompany contractCompany = new PsContractCompany();
contractCompany.setContractCode(contractCode);
contractCompany.setCompanyId(bo.getId());
contractCompany.setTaskRemark(bo.getTaskRemark());
saveList.add(contractCompany);
}
contractCompanyMapper.insertBatch(saveList);

View File

@ -95,6 +95,8 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
private final SysUserMapper sysUserMapper;
private final ISysNoticeService noticeService;
private final PsContractPayMapper psContractPayMapper;
public static String getContractCode(){
Random random = new Random();
int randomNumber = random.nextInt(8999) + 1000;
@ -302,6 +304,77 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
}
public PsContractCountVo countContractInfo(PsContractInfoQueryBo bo){
if(bo.getType() == null || bo.getType() == 1){//合同列表要作废数据
}else if(bo.getType() == 2){//待回款不要作废数据
bo.setInContractStatus(List.of(ContractStatusEnum.CREATE.getCode()));
}else if (bo.getType() == 3){//已回款(要特定的作废数据)
bo.setInContractStatus(ContractStatusEnum.getReturn());
}else if (bo.getType() == 4){//托管续费合同
bo.setInContractStatus(List.of(ContractStatusEnum.SUCCESS.getCode()));
log.info("托管服务");
}
QueryWrapper<PsContractInfo> lqw = buildQueryWrapper(bo);
List<ContractAmountVo> contractCountList = baseMapper.selectCountContract(lqw);
if (contractCountList.isEmpty()){
return new PsContractCountVo();
}
Set<String> allCode = new HashSet<>();
BigDecimal allAmount = new BigDecimal(0);
for (ContractAmountVo contractAmountRes : contractCountList) {
allCode.add(contractAmountRes.getContractCode());
allAmount = allAmount.add(contractAmountRes.getContractAmount());
}
QueryWrapper<PsContractPay> payVoQueryWrapper = new QueryWrapper<>();
payVoQueryWrapper.in("contract_code", allCode);
payVoQueryWrapper.eq("del_flag", 0);
payVoQueryWrapper.eq("pay_status", '1');
List<PsContractPayVo> psContractPayVos = psContractPayMapper.selectVoList(payVoQueryWrapper);
Map<String, BigDecimal> contractPay = new HashMap<>();//每个合同支付了多少钱
BigDecimal payAll = new BigDecimal(0);
for (PsContractPayVo psContractPayVo : psContractPayVos) {
if ("1".equals(psContractPayVo.getBusinessType())){
payAll = payAll.add(psContractPayVo.getMoney());
BigDecimal nowPay = contractPay.getOrDefault(psContractPayVo.getContractCode(), new BigDecimal(0));
nowPay = nowPay.add(psContractPayVo.getMoney());
contractPay.put(psContractPayVo.getContractCode(), nowPay);
}else if ("2".equals(psContractPayVo.getBusinessType())) {
payAll = payAll.subtract(psContractPayVo.getMoney());
BigDecimal nowPay = contractPay.getOrDefault(psContractPayVo.getContractCode(), new BigDecimal(0));
nowPay = nowPay.subtract(psContractPayVo.getMoney());
contractPay.put(psContractPayVo.getContractCode(), nowPay);
}
}
Set<String> payedContract = new HashSet<>();//已支付的合同
for (Map.Entry<String, BigDecimal> stringBigDecimalEntry : contractPay.entrySet()) {
if(stringBigDecimalEntry.getValue().doubleValue() > 0){
payedContract.add(stringBigDecimalEntry.getKey());
}
}
//已有回款合同 总金额
BigDecimal hasPayContractAmount = new BigDecimal(0);
//没有回款的合同
BigDecimal noPayContractAmount = new BigDecimal(0);
for (ContractAmountVo contractAmountRes : contractCountList) {
if (payedContract.contains(contractAmountRes.getContractCode())) {
hasPayContractAmount = hasPayContractAmount.add(contractAmountRes.getContractAmount());
}else{
noPayContractAmount = noPayContractAmount.add(contractAmountRes.getContractAmount());
}
}
PsContractCountVo contractCountVo = new PsContractCountVo();
contractCountVo.setContractAmount(allAmount);
contractCountVo.setPayMoney(payAll);
contractCountVo.setResidualMoney(hasPayContractAmount.subtract(payAll));
contractCountVo.setWaitPayMoney(noPayContractAmount);
return contractCountVo;
}
/**
* 分页查询合同信息列表
*
@ -1007,8 +1080,8 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
qw.exists(CollectionUtils.isNotEmpty(bo.getServiceProjects()), "select 1 from ps_contract_business detail " +
"where detail.contract_code = info.contract_code and detail.business_type in ("+StringUtils.join(bo.getServiceProjects(),",")+")");//服务项目编码集合
qw.between(bo.getMoneyEnd() != null && bo.getMoneyStart() !=null,"info.contract_amount",bo.getMoneyStart(),bo.getMoneyEnd());
qw.orderByDesc("info.create_time");
// qw.orderByDesc("info.create_time");
qw.orderByDesc("info.apply_date");
return qw;
}
private List<PsContractInfoVo> fillContractInfo(List<PsContractInfoVo> vos){

View File

@ -72,22 +72,43 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService {
* @return 客户id和姓名
*/
@Override
public List<Map<String,Object>> listByLoginUser(String name) {
public List<Map<String,Object>> listByLoginUser(String name, PageQuery pageQuery) {
//查询客户基本信息
List<PsCustomInfo> list = baseMapper.selectList(new QueryWrapper<PsCustomInfo>().select("id", "custom_name","custom_mobile","create_time","custom_source")
Page<PsCustomInfoVo> list = baseMapper.selectVoPage(pageQuery.build()
, new QueryWrapper<PsCustomInfo>()
.select("id", "custom_name", "custom_mobile", "create_time", "custom_source")
.lambda().eq(PsCustomInfo::getDelFlag, 0).isNotNull(PsCustomInfo::getCustomName).ne(PsCustomInfo::getCustomName,"").ne(PsCustomInfo::getCustomName,"")
.and(StringUtils.isNotBlank(name), wq->wq.like(PsCustomInfo::getCustomName,name).or().like(PsCustomInfo::getCustomMobile,name)));
List<Long> ids = list.getRecords().stream().map(PsCustomInfoVo::getId).collect(Collectors.toList());
//查询公司信息
List<PsCompanyInfoVo> companyInfoVos = companyInfoMapper.selectVoList(Wrappers.<PsCompanyInfo>lambdaQuery()
.in(PsCompanyInfo::getCustomId, ids)
.eq(PsCompanyInfo::getDelFlag, 0)
.eq(PsCompanyInfo::getCompanyType, "2")
);
Map<Long, List<PsCompanyInfoVo>> id_companyMap = new HashMap<>();
if(CollectionUtils.isNotEmpty(companyInfoVos)){
//分组
id_companyMap = companyInfoVos.stream().collect((Collectors.groupingBy(PsCompanyInfoVo::getCustomId)));
//排序
id_companyMap.entrySet().forEach(entry->{
entry.setValue(entry.getValue().stream().sorted(Comparator.comparingLong(PsCompanyInfoVo::getId)).collect(Collectors.toList()));
});
}
List<Map<String,Object>> listmap = new ArrayList<>();
list.forEach(item->{
for (PsCustomInfoVo item : list.getRecords()) {
Map<String,Object> map = new HashMap<>();
map.put("id", item.getId());
map.put("customName", item.getCustomName());
map.put("custom_mobile", item.getCustomMobile());
map.put("createTime", DateUtils.toString(item.getCreateTime(),"yyyy-MM-dd"));
map.put("customSource", item.getCustomSource());
map.put("psCompanySerivceVo", id_companyMap.get(item.getId()));
listmap.add(map);
});
}
return listmap;
}
@ -151,7 +172,6 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService {
entry.setValue(entry.getValue().stream().sorted(Comparator.comparingLong(PsCustomCallbackVo::getId).reversed()).collect(Collectors.toList()));
});
}
//查询公司信息
List<PsCompanyInfoVo> companyInfoVos = companyInfoMapper.selectVoList(Wrappers.<PsCompanyInfo>lambdaQuery()
.in(PsCompanyInfo::getCustomId, ids)

View File

@ -66,6 +66,17 @@ public class PsSalaryServiceImpl implements IPsSalaryService {
LocalDateTime deadline = bo.getEndDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
LocalDate thisMonth = DateUtils.getFirstDayZeroTimeByMonth().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
List<PsSalaryVo> adds = calSalaryBatch.calcData(deadline, thisMonth, false);
Collections.sort(adds, new Comparator<PsSalaryVo>() {
@Override
public int compare(PsSalaryVo o1, PsSalaryVo o2) {
if (o1.getSalaryMoney().doubleValue() > o2.getSalaryMoney().doubleValue()){
return -1;
}else{
return 1;
}
}
});
List<PsSalaryVo> records = new ArrayList<>();
records.addAll(result.getRecords());
@ -97,6 +108,8 @@ public class PsSalaryServiceImpl implements IPsSalaryService {
lqw.le(bo.getEndDate() != null, "salary_date", bo.getEndDate());
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.orderByDesc("salary_money");
// lqw.orderByAsc("CASE WHEN salary_money = 0 THEN 9999999999 ELSE salary_money END, salary_money");
return lqw;
}
/**

View File

@ -119,8 +119,8 @@ public class PsTaskServiceImpl implements IPsTaskService {
vo.setExtend(null);
}
}else{
lqw.orderByAsc("CASE WHEN main.task_status = '30' THEN 1 ELSE 0 END ");
lqw.orderByAsc("assigned");
// lqw.orderByAsc("CASE WHEN main.task_status = '30' THEN 1 ELSE 0 END ");
// lqw.orderByAsc("assigned");
lqw.orderByDesc("main.create_time");
page = baseMapper.queryTaskPageList(pageQuery.build(), lqw);
}

View File

@ -45,6 +45,43 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
${ew.getCustomSqlSegment}
</select>
<select id="selectCountContract" resultType="com.pusong.business.domain.vo.ContractAmountVo">
select
-- sum(info.contract_amount) contract_amount
info.contract_code, info.contract_amount
from ps_contract_info info
left join ps_company_info com on info.company_id = com.id
left join ps_custom_info cus on info.custom_id = cus.id
left join sys_user us on info.custom_manager = us.user_id
${ew.getCustomSqlSegment}
</select>
<select id="selectCountContractPay" resultType="com.pusong.business.domain.vo.PsContractCountVo">
select
(
select
sum(pay.money) pay_money
from ps_contract_info info
left join ps_company_info com on info.company_id = com.id
left join ps_custom_info cus on info.custom_id = cus.id
left join sys_user us on info.custom_manager = us.user_id
left join ps_contract_pay pay on pay.contract_code = info.contract_code
and pay.del_flag = 0 and pay.business_type = '1' and pay.pay_status = '1'
${ew.getCustomSqlSegment}
) pay_money
,
(
select
sum(ret_pay.money) return_money
from ps_contract_info info
left join ps_company_info com on info.company_id = com.id
left join ps_custom_info cus on info.custom_id = cus.id
left join sys_user us on info.custom_manager = us.user_id
left join ps_contract_pay ret_pay on ret_pay.contract_code = info.contract_code
and ret_pay.del_flag = 0 and ret_pay.business_type = '2' and ret_pay.pay_status = '1'
${ew.getCustomSqlSegment}
) return_money
</select>
<select id="selectPageContractListByCustomId" resultMap="contractResult">
<include refid="queryContractList"/>
<where>

View File

@ -57,6 +57,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
cus.custom_mobile cus_custom_mobile,
cus.custom_manager cus_custom_manager,
usr.nick_name cus_custom_manager_name,
pcc.task_remark,
(select pta.id from ps_task_appoint pta where pta.task_id=main.id and pta.appoint_type=1 and pta.appoint_status != '50' and pta.del_flag = '0' order by id desc limit 0,1) as inAppo,
(select pta.id from ps_task_appoint pta where pta.task_id=main.id and pta.appoint_type=2 and pta.appoint_status != '50' and pta.del_flag = '0' order by id desc limit 0,1) as outAppo,
@ -77,6 +78,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
left join ps_company_info com on main.company_id = com.id
left join ps_custom_info cus on main.custom_id = cus.id
left join sys_user usr on cus.custom_manager = usr.user_id
left join ps_contract_company pcc on pcc.contract_code = con.contract_code and pcc.company_id = scom.id
</sql><!-- 这注释是上边sql 的,不知道为啥要加这个来着, 因为任务列表分页受影响所以删除left join ps_contract_business bus on bus.contract_code = con.contract_code and bus.company_id = main.service_company_id and bus.del_flag = '0'-->
@ -104,21 +106,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
con.is_proxy con_is_proxy,
con.custom_scene con_custom_scene,
con.sign_desc con_sign_desc,
com.id scom_id,
scom.id scom_id,
usr.nick_name scom_custom_manager_name,
com.company_adress scom_company_adress,
com.company_name scom_company_name,
com.legal_person_name scom_legal_person_name,
com.legal_person_idcard scom_legal_person_idcard,
com.legal_person_phone scom_legal_person_phone,
com.contact_person_name scom_contact_person_name,
com.contact_person_phone scom_contact_person_phone,
com.customer_num scom_customer_num,
com.customer_cert scom_customer_cert,
com.finance_account_no scom_finance_account_no,
scom.company_adress scom_company_adress,
scom.company_name scom_company_name,
scom.legal_person_name scom_legal_person_name,
scom.legal_person_idcard scom_legal_person_idcard,
scom.legal_person_phone scom_legal_person_phone,
scom.contact_person_name scom_contact_person_name,
scom.contact_person_phone scom_contact_person_phone,
scom.customer_num scom_customer_num,
scom.customer_cert scom_customer_cert,
scom.finance_account_no scom_finance_account_no,
cus.id cus_id,
cus.custom_name cus_custom_name ,
cus.custom_mobile cus_custom_mobile,
pcc.task_remark,
(CASE WHEN (con.contract_amount -
(select IFNULL(sum(money),0) from ps_contract_pay pay where pay.business_type =1 and pay.contract_code = main.contract_code and pay.pay_status = '1' ) +
(select IFNULL(sum(money),0) from ps_contract_pay cpay where cpay.business_type =2 and cpay.contract_code = main.contract_code )
@ -134,10 +137,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
from ps_task_appoint appo
left join ps_task_main main on appo.task_id = main.id and appo.appoint_status != '50'
left join ps_contract_info con on main.contract_code = con.contract_code
left join ps_company_info com on main.service_company_id = com.id
left join ps_company_info scom on main.service_company_id = scom.id
left join ps_custom_info cus on main.custom_id = cus.id
left join sys_user usr on cus.custom_manager = usr.user_id
left join ps_contract_company pcc on pcc.contract_code = con.contract_code and pcc.company_id = scom.id
-- left join ps_task_appoint appoint on appoint.task_id = main.id and appoint.appoint_status != '50' and appoint.del_flag = '0'
${ew.getCustomSqlSegment}