生成运营商日报表

This commit is contained in:
Guoqs
2025-02-20 15:31:32 +08:00
parent df848f0eb0
commit 04bd04186c
7 changed files with 122 additions and 135 deletions

View File

@@ -1,6 +1,11 @@
package com.jsowell.pile.domain;
import lombok.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import lombok.experimental.SuperBuilder;
import java.math.BigDecimal;
import java.util.Date;
@@ -8,8 +13,9 @@ import java.util.Date;
/**
* 清分账单表
*/
@Getter
@Setter
@Data
@Accessors(chain = true)
@SuperBuilder
@Builder
@AllArgsConstructor
@NoArgsConstructor
@@ -49,6 +55,11 @@ public class ClearingBillInfo {
*/
private String orderSource;
/**
* 订单结算金额(当天汇总)
*/
private BigDecimal settleAmount;
/**
* 应收金额
*/

View File

@@ -8,64 +8,24 @@ import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface ClearingBillInfoMapper {
/**
* delete by primary key
*
* @param id primaryKey
* @return deleteCount
*/
int deleteByPrimaryKey(Integer id);
/**
* insert record to table
*
* @param record the record
* @return insert count
*/
int insert(ClearingBillInfo record);
int insertOrUpdate(ClearingBillInfo record);
int insertOrUpdateSelective(ClearingBillInfo record);
/**
* insert record to table selective
*
* @param record the record
* @return insert count
*/
int insertSelective(ClearingBillInfo record);
/**
* select by primary key
*
* @param id primary key
* @return object by primary key
*/
ClearingBillInfo selectByPrimaryKey(Integer id);
/**
* update record selective
*
* @param record the updated record
* @return update count
*/
int updateByPrimaryKeySelective(ClearingBillInfo record);
/**
* update record
*
* @param record the updated record
* @return update count
*/
int updateByPrimaryKey(ClearingBillInfo record);
int updateBatch(List<ClearingBillInfo> list);
int updateBatchSelective(List<ClearingBillInfo> list);
int batchInsert(@Param("list") List<ClearingBillInfo> list);
int insertOrUpdate(ClearingBillInfo record);
int insertOrUpdateSelective(ClearingBillInfo record);
List<ClearingBillInfo> selectByMerchantId(@Param("merchantId") String merchantId, @Param("billStatus") String billStatus, @Param("tradeDate") String tradeDate);
void updateStatus(@Param("clearingBillIds") List<Integer> clearingBillIds, @Param("billStatus") String billStatus, @Param("withdrawCode") String withdrawCode);

View File

@@ -59,6 +59,11 @@ public interface AdapayMemberAccountService {
*/
int deleteAdapayMemberAccountByIds(List<String> ids);
/**
* 根据商户id查询汇付会员id
* @param merchantId
* @return
*/
String selectAdapayMemberIdByMerchantId(String merchantId);
/**
@@ -98,5 +103,10 @@ public interface AdapayMemberAccountService {
*/
int deleteAuditFailed(String merchantId);
/**
* 根据汇付会员id查询运营商名称
* @param adapayMemberId
* @return
*/
String selectMerchantNameByAdapayMemberId(String adapayMemberId);
}

View File

@@ -11,16 +11,12 @@ public interface ClearingBillInfoService {
int deleteByPrimaryKey(Integer id);
int insert(ClearingBillInfo record);
int insertSelective(ClearingBillInfo record);
ClearingBillInfo selectByPrimaryKey(Integer id);
int updateByPrimaryKeySelective(ClearingBillInfo record);
int updateByPrimaryKey(ClearingBillInfo record);
List<ClearingBillInfo> selectByMerchantId(String merchantId, String billStatus);
void updateStatus(List<Integer> clearingBillIds, String billStatus, String withdrawCode);
@@ -37,8 +33,6 @@ public interface ClearingBillInfoService {
int insertOrUpdateSelective(ClearingBillInfo record);
int updateBatch(List<ClearingBillInfo> list);
int updateBatchSelective(List<ClearingBillInfo> list);
int batchInsert(List<ClearingBillInfo> list);

View File

@@ -27,11 +27,6 @@ public class ClearingBillInfoServiceImpl implements ClearingBillInfoService {
return clearingBillInfoMapper.deleteByPrimaryKey(id);
}
@Override
public int insert(ClearingBillInfo record) {
return clearingBillInfoMapper.insert(record);
}
@Override
public int insertSelective(ClearingBillInfo record) {
return clearingBillInfoMapper.insertSelective(record);
@@ -47,11 +42,6 @@ public class ClearingBillInfoServiceImpl implements ClearingBillInfoService {
return clearingBillInfoMapper.updateByPrimaryKeySelective(record);
}
@Override
public int updateByPrimaryKey(ClearingBillInfo record) {
return clearingBillInfoMapper.updateByPrimaryKey(record);
}
@Override
public List<ClearingBillInfo> selectByMerchantId(String merchantId, String billStatus) {
return clearingBillInfoMapper.selectByMerchantId(merchantId, billStatus, null);
@@ -91,11 +81,6 @@ public class ClearingBillInfoServiceImpl implements ClearingBillInfoService {
return clearingBillInfoMapper.insertOrUpdateSelective(record);
}
@Override
public int updateBatch(List<ClearingBillInfo> list) {
return clearingBillInfoMapper.updateBatch(list);
}
@Override
public int updateBatchSelective(List<ClearingBillInfo> list) {
return clearingBillInfoMapper.updateBatchSelective(list);

View File

@@ -1435,6 +1435,9 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
return;
}
// 查询运营商的汇付id
String adapayMemberId = adapayMemberAccountService.selectAdapayMemberIdByMerchantId(merchantId);
// 从stationReportList中去除orderCodes并根据逗号切割组成List<String> orderCodeList
List<String> orderCodeList = stationReportList.stream()
.map(SettleOrderReport::getOrderCodes)
@@ -1449,19 +1452,24 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
ClearingBillInfo clearingBillInfo = new ClearingBillInfo();
String clearingBillCode = "CLE" + IdUtils.getOrderCode();
if (queryBillInfo != null) {
// 清分账单则更新清分账单信息
clearingBillInfo.setId(queryBillInfo.getId());
clearingBillCode = queryBillInfo.getClearingBillCode();
}
clearingBillInfo.setBillStatus("1");
clearingBillInfo.setBillStatus("2");
clearingBillInfo.setTradeDate(tradeDate);
clearingBillInfo.setClearingBillCode(clearingBillCode);
clearingBillInfo.setClearingTime(DateUtils.getNowDate());
clearingBillInfo.setMerchantId(merchantId);
clearingBillInfo.setOrderSource("1");
clearingBillInfo.setOrderSource(Constants.ONE); // 订单来源1-有电充平台)
clearingBillInfo.setDelFlag(DelFlagEnum.NORMAL.getValue());
// 应收金额
BigDecimal receivableAmount = BigDecimal.ZERO;
// 结算金额
BigDecimal settleAmount = BigDecimal.ZERO;
// 应清分金额
BigDecimal shouldClearingAmount = BigDecimal.ZERO;
// 应收金额
BigDecimal receivableAmount = BigDecimal.ZERO;
// 实际清分金额
BigDecimal actualClearingAmount = BigDecimal.ZERO;
// 手续费金额
@@ -1471,25 +1479,47 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
// 清分账单详情列表
List<ClearingBillDetail> billDetailList = Lists.newArrayList();
// 统计订单数据
for (String orderCode : orderCodeList) {
for (Map.Entry<String, List<OrderSplitRecord>> entry : orderSplitRecordMap.entrySet()) {
List<OrderSplitRecord> value = entry.getValue();
if (CollectionUtils.isNotEmpty(value)) {
List<OrderSplitRecord> value = orderSplitRecordMap.get(orderCode); // 该订单的分账记录
if (CollectionUtils.isEmpty(value)) {
logger.info("订单号:{},未查询到订单分账信息continue", orderCode);
continue;
}
for (int i = 0; i < value.size(); i++) {
OrderSplitRecord orderSplitRecord = value.get(i);
if (i == 0) {
// 结算金额只统计一次
settleAmount = settleAmount.add(orderSplitRecord.getSettleAmount());
shouldClearingAmount = shouldClearingAmount.add(orderSplitRecord.getSettleAmount());
}
if (StringUtils.equals(adapayMemberId, orderSplitRecord.getAdapayMemberId())) {
// 应收 = 电费 + 服务费
BigDecimal receivable = orderSplitRecord.getElectricitySplitAmount().add(orderSplitRecord.getServiceSplitAmount());
receivableAmount = receivableAmount.add(receivable);
// 手续费
BigDecimal fee = orderSplitRecord.getFeeAmount();
feeAmount = feeAmount.add(fee);
// 实际清分金额
BigDecimal actualClearing = receivable.subtract(fee);
actualClearingAmount = actualClearingAmount.add(actualClearing);
withdrawableAmount = withdrawableAmount.add(actualClearing);
}
// 记录详情
ClearingBillDetail clearingBillDetail = ClearingBillDetail.builder()
.clearingBillCode(clearingBillCode)
.orderCode(orderCode)
.createTime(DateUtils.getNowDate())
.delFlag(DelFlagEnum.NORMAL.getValue())
.build();
}
}
clearingBillInfo.setBillStatus("2");
clearingBillInfo.setTradeDate(tradeDate);
clearingBillInfo.setReceivableAmount(receivableAmount);
clearingBillInfo.setShouldClearingAmount(shouldClearingAmount);
clearingBillInfo.setFeeAmount(feeAmount);
clearingBillInfo.setWithdrawableAmount(withdrawableAmount);
clearingBillInfo.setActualClearingAmount(actualClearingAmount);
clearingBillInfo.setDelFlag(DelFlagEnum.NORMAL.getValue());
clearingBillInfo.setSettleAmount(settleAmount);
clearingBillInfo.setShouldClearingAmount(shouldClearingAmount); // 应清分金额
clearingBillInfo.setReceivableAmount(receivableAmount); // 应收金额
clearingBillInfo.setFeeAmount(feeAmount); // 手续费
clearingBillInfo.setActualClearingAmount(actualClearingAmount); // 实际清分金额
clearingBillInfo.setWithdrawableAmount(withdrawableAmount); // 可提现金额
// 保存清分账单
ClearingBillTransactionDTO dto = new ClearingBillTransactionDTO();