Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
f22be83321
4
pom.xml
4
pom.xml
@ -369,11 +369,11 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- 工作流模块 -->
|
<!-- 工作流模块 -->
|
||||||
<!--<dependency>
|
<dependency>
|
||||||
<groupId>com.pusong</groupId>
|
<groupId>com.pusong</groupId>
|
||||||
<artifactId>pusong-workflow</artifactId>
|
<artifactId>pusong-workflow</artifactId>
|
||||||
<version>${revision}</version>
|
<version>${revision}</version>
|
||||||
</dependency>-->
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</dependencyManagement>
|
</dependencyManagement>
|
||||||
|
@ -85,10 +85,10 @@
|
|||||||
<artifactId>pusong-business</artifactId>
|
<artifactId>pusong-business</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- 工作流模块 -->
|
<!-- 工作流模块 -->
|
||||||
<!-- <dependency>
|
<dependency>
|
||||||
<groupId>com.pusong</groupId>
|
<groupId>com.pusong</groupId>
|
||||||
<artifactId>pusong-workflow</artifactId>
|
<artifactId>pusong-workflow</artifactId>
|
||||||
</dependency>-->
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>de.codecentric</groupId>
|
<groupId>de.codecentric</groupId>
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
<module>pusong-generator</module>
|
<module>pusong-generator</module>
|
||||||
<module>pusong-job</module>
|
<module>pusong-job</module>
|
||||||
<module>pusong-system</module>
|
<module>pusong-system</module>
|
||||||
<!-- <module>pusong-workflow</module>-->
|
<module>pusong-workflow</module>
|
||||||
<module>pusong-business</module>
|
<module>pusong-business</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ import cn.dev33.satoken.annotation.SaIgnore;
|
|||||||
import com.pusong.business.domain.bo.PsSalaryBo;
|
import com.pusong.business.domain.bo.PsSalaryBo;
|
||||||
import com.pusong.business.domain.vo.PsSalaryContractVo;
|
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.vo.home.ChannelAmountVo;
|
||||||
import com.pusong.business.domain.vo.home.MakeAmountVo;
|
import com.pusong.business.domain.vo.home.MakeAmountVo;
|
||||||
import com.pusong.business.domain.vo.home.ReturnAmountVo;
|
import com.pusong.business.domain.vo.home.ReturnAmountVo;
|
||||||
import com.pusong.business.domain.vo.home.ReturnMoneyInfoVo;
|
import com.pusong.business.domain.vo.home.ReturnMoneyInfoVo;
|
||||||
@ -65,7 +66,7 @@ public class HomeController extends BaseController {
|
|||||||
*/
|
*/
|
||||||
@SaCheckPermission("business:salary:list")
|
@SaCheckPermission("business:salary:list")
|
||||||
@GetMapping("/byChannel")
|
@GetMapping("/byChannel")
|
||||||
public R<ReturnAmountVo> byChannel(@RequestParam() Integer type) {
|
public R<ChannelAmountVo> byChannel(@RequestParam() Integer type) {
|
||||||
return R.ok(homeService.byChannel(type));
|
return R.ok(homeService.byChannel(type));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,7 +6,6 @@ import lombok.Data;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ -29,20 +28,20 @@ public class ChannelAmountVo {
|
|||||||
/**
|
/**
|
||||||
* 各渠道成交金额
|
* 各渠道成交金额
|
||||||
*/
|
*/
|
||||||
private Map<String,DataAmountVo> one;
|
private Map<String,DataAmountVo> channelMap;
|
||||||
|
|
||||||
|
|
||||||
public void cellPer(){
|
public void cellPer(){
|
||||||
//计算总金额
|
//计算总金额
|
||||||
this.all = this.all == null? BigDecimal.ZERO: this.all;
|
this.all = this.all == null? BigDecimal.ZERO: this.all;
|
||||||
for (String str : one.keySet()){
|
for (String str : channelMap.keySet()){
|
||||||
all = all.add(one.get(str).getMoney());
|
all = all.add(channelMap.get(str).getMoney());
|
||||||
}
|
}
|
||||||
//计算占比
|
//计算占比
|
||||||
if(0 == this.all.compareTo(BigDecimal.ZERO)) {
|
if(0 == this.all.compareTo(BigDecimal.ZERO)) {
|
||||||
one.forEach((k,v)->{v.setPer("0%");});
|
channelMap.forEach((k, v)->{v.setPer("0%");});
|
||||||
}else {
|
}else {
|
||||||
one.forEach((k,v)->{v.setPer(v.getMoney().multiply(new BigDecimal("100.0")).divide(this.all,2, RoundingMode.HALF_UP).toPlainString()+"%");});
|
channelMap.forEach((k, v)->{v.setPer(v.getMoney().multiply(new BigDecimal("100.0")).divide(this.all,2, RoundingMode.HALF_UP).toPlainString()+"%");});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,36 @@
|
|||||||
|
package com.pusong.business.domain.vo.home;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
//渠道支付信息
|
||||||
|
@Data
|
||||||
|
public class ChannelPayInfo {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 渠道编码
|
||||||
|
*/
|
||||||
|
private String channel;
|
||||||
|
/**
|
||||||
|
* 合同编码
|
||||||
|
*/
|
||||||
|
private String contractCode;
|
||||||
|
/**
|
||||||
|
* 合同金额
|
||||||
|
*/
|
||||||
|
private BigDecimal contractAmount;
|
||||||
|
/**
|
||||||
|
* 支付类型1回款2退款
|
||||||
|
*/
|
||||||
|
private String businessType;
|
||||||
|
/**
|
||||||
|
* 回款/退款金额
|
||||||
|
*/
|
||||||
|
private BigDecimal money;
|
||||||
|
|
||||||
|
}
|
@ -9,6 +9,7 @@ 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.business.domain.vo.PsSalaryContractVo;
|
||||||
|
import com.pusong.business.domain.vo.home.ChannelPayInfo;
|
||||||
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;
|
||||||
@ -43,4 +44,8 @@ public interface PsContractInfoMapper extends BaseMapperPlus<PsContractInfo, PsC
|
|||||||
List<PsSalaryContract> querySalaryListByCodes(@Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
|
List<PsSalaryContract> 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<ChannelPayInfo> byChannel(@Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.pusong.business.service;
|
package com.pusong.business.service;
|
||||||
|
|
||||||
|
import com.pusong.business.domain.vo.home.ChannelAmountVo;
|
||||||
import com.pusong.business.domain.vo.home.MakeAmountVo;
|
import com.pusong.business.domain.vo.home.MakeAmountVo;
|
||||||
import com.pusong.business.domain.vo.home.ReturnAmountVo;
|
import com.pusong.business.domain.vo.home.ReturnAmountVo;
|
||||||
import com.pusong.business.domain.vo.home.ReturnMoneyInfoVo;
|
import com.pusong.business.domain.vo.home.ReturnMoneyInfoVo;
|
||||||
@ -18,5 +19,5 @@ public interface HomeService {
|
|||||||
* @param type
|
* @param type
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
ReturnAmountVo byChannel(Integer type);
|
ChannelAmountVo byChannel(Integer type);
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,11 @@
|
|||||||
package com.pusong.business.service.impl;
|
package com.pusong.business.service.impl;
|
||||||
|
|
||||||
|
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.PsContractInfo;
|
||||||
import com.pusong.business.domain.PsContractPay;
|
import com.pusong.business.domain.PsContractPay;
|
||||||
import com.pusong.business.domain.vo.home.MakeAmountVo;
|
import com.pusong.business.domain.vo.home.*;
|
||||||
import com.pusong.business.domain.vo.home.ReturnAmountVo;
|
|
||||||
import com.pusong.business.domain.vo.home.ReturnMoneyInfoVo;
|
|
||||||
import com.pusong.business.domain.vo.home.DataAmountVo;
|
|
||||||
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;
|
||||||
@ -15,6 +13,9 @@ import com.pusong.business.mapper.PsContractInfoMapper;
|
|||||||
import com.pusong.business.mapper.PsContractPayMapper;
|
import com.pusong.business.mapper.PsContractPayMapper;
|
||||||
import com.pusong.business.service.HomeService;
|
import com.pusong.business.service.HomeService;
|
||||||
import com.pusong.common.core.constant.CacheNames;
|
import com.pusong.common.core.constant.CacheNames;
|
||||||
|
import com.pusong.system.domain.bo.SysDictDataBo;
|
||||||
|
import com.pusong.system.domain.vo.SysDictDataVo;
|
||||||
|
import com.pusong.system.service.ISysDictDataService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@ -37,6 +38,8 @@ public class HomeServiceImpl implements HomeService {
|
|||||||
private final PsContractInfoMapper psContractInfoMapper;
|
private final PsContractInfoMapper psContractInfoMapper;
|
||||||
private final PsContractPayMapper payMapper;
|
private final PsContractPayMapper payMapper;
|
||||||
|
|
||||||
|
private final ISysDictDataService dictDataService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询成交总金额
|
* 查询成交总金额
|
||||||
* @param type
|
* @param type
|
||||||
@ -204,22 +207,51 @@ public class HomeServiceImpl implements HomeService {
|
|||||||
* @param type
|
* @param type
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public ReturnAmountVo byChannel(Integer type){
|
public ChannelAmountVo byChannel(Integer type){
|
||||||
Map<String, Object> mapParam = this.getDate(type);
|
Map<String, Object> mapParam = this.getDate(type);
|
||||||
LocalDate startDate = (LocalDate)mapParam.get("startDate");
|
LocalDate startDate = (LocalDate)mapParam.get("startDate");
|
||||||
LocalDate endDate = (LocalDate)mapParam.get("endDate");
|
LocalDate endDate = (LocalDate)mapParam.get("endDate");
|
||||||
String date = (String)mapParam.get("date");
|
String date = (String)mapParam.get("date");
|
||||||
|
//返回dto
|
||||||
|
ChannelAmountVo res = new ChannelAmountVo();
|
||||||
|
res.setDateStr(date);
|
||||||
log.info("查询日期:{}到{}",startDate,endDate);
|
log.info("查询日期:{}到{}",startDate,endDate);
|
||||||
List<PsContractInfo> list = psContractInfoMapper.selectList(Wrappers.query());
|
List<ChannelPayInfo> list = psContractInfoMapper.byChannel(new QueryWrapper<PsContractInfo>()
|
||||||
// .select(PsContractInfo::getContractCode, PsContractInfo::getIsDue, PsContractInfo::getContractAmount)
|
.ne("info.is_due", CommonStatusEnum.SUCCESS.getCode()).ne("info.contract_status", ContractStatusEnum.INIT.getCode())
|
||||||
// .ne(PsContractInfo::getIsCancel, CommonStatusEnum.SUCCESS.getCode())
|
.eq("pay.pay_status",PayStatusEnum.SUCCESS.getCode())
|
||||||
// .ne(PsContractInfo::getContractStatus, ContractStatusEnum.INIT.getCode())
|
.ge(startDate != null,"info.apply_date",startDate).le(endDate != null,"info.apply_date",endDate));
|
||||||
// .ge(startDate != null,PsContractInfo::getApplyDate,startDate)
|
//查询各个渠道的字典表
|
||||||
// .le(endDate != null,PsContractInfo::getApplyDate,endDate));
|
SysDictDataBo dictData = new SysDictDataBo();
|
||||||
list.stream().collect(Collectors.groupingBy(PsContractInfo::getContractCode)).entrySet().stream().forEach(entry -> {});
|
dictData.setInDictType(List.of("custom_source"));
|
||||||
|
List<SysDictDataVo> dictList = dictDataService.selectDictDataList(dictData);
|
||||||
|
//取字典label()
|
||||||
return null;
|
List<String> configList = dictList.stream().map(SysDictDataVo::getDictLabel).toList();
|
||||||
|
//把支付信息根据渠道分组(方便下面使用)
|
||||||
|
Map<String, List<ChannelPayInfo>> map = list.stream().collect(Collectors.groupingBy(ChannelPayInfo::getChannel, Collectors.toList()));
|
||||||
|
//各渠道的支付信息
|
||||||
|
Map<String,DataAmountVo> channelMap = new HashMap<>();
|
||||||
|
//便利渠道,装填各个渠道信息
|
||||||
|
for (String item : configList){
|
||||||
|
DataAmountVo data = new DataAmountVo();
|
||||||
|
List<ChannelPayInfo> payList = map.get(item) == null ? new ArrayList<>() : map.get(item);
|
||||||
|
Set<String> contractCodes = new HashSet<>();
|
||||||
|
BigDecimal money = BigDecimal.ZERO;
|
||||||
|
BigDecimal paymoney = BigDecimal.ZERO;
|
||||||
|
for (ChannelPayInfo pay : payList){
|
||||||
|
contractCodes.add(pay.getContractCode());
|
||||||
|
money = money.add(pay.getContractAmount());
|
||||||
|
paymoney = pay.getBusinessType().equals("1")? paymoney.add(pay.getMoney()) : paymoney.subtract(pay.getMoney());
|
||||||
|
}
|
||||||
|
BigDecimal unpaymoney = money.subtract(paymoney);
|
||||||
|
data.setNum(contractCodes.size()+"单");
|
||||||
|
data.setMoney(money);
|
||||||
|
data.setPayMoney(paymoney);
|
||||||
|
data.setUnPayMoney(unpaymoney);
|
||||||
|
channelMap.put(item,data);
|
||||||
|
}
|
||||||
|
res.setChannelMap(channelMap);
|
||||||
|
//计算总金额和占比
|
||||||
|
res.cellPer();
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -85,4 +85,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
info.contract_status != #{queryParam.contractStatus} and
|
info.contract_status != #{queryParam.contractStatus} and
|
||||||
info.is_cancel != #{queryParam.isCancel}
|
info.is_cancel != #{queryParam.isCancel}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
<select id="byChannel" resultType="com.pusong.business.domain.vo.home.ChannelPayInfo">
|
||||||
|
select
|
||||||
|
cus.custom_source,
|
||||||
|
info.contract_code,
|
||||||
|
info.contract_amount,
|
||||||
|
pay.business_type,
|
||||||
|
pay.money
|
||||||
|
from ps_contract_info info
|
||||||
|
left join ps_custom_info cus on info.custom_id = cus.id
|
||||||
|
left join ps_contract_pay pay on info.contract_code = pay.contract_code
|
||||||
|
${ew.getCustomSqlSegment}
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
Loading…
Reference in New Issue
Block a user