生成运营商日报表

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

View File

@@ -11,6 +11,7 @@
<result column="clearing_time" jdbcType="TIMESTAMP" property="clearingTime" />
<result column="merchant_id" jdbcType="VARCHAR" property="merchantId" />
<result column="order_source" jdbcType="VARCHAR" property="orderSource" />
<result column="settle_amount" jdbcType="DECIMAL" property="settleAmount" />
<result column="receivable_amount" jdbcType="DECIMAL" property="receivableAmount" />
<result column="should_clearing_amount" jdbcType="DECIMAL" property="shouldClearingAmount" />
<result column="actual_clearing_amount" jdbcType="DECIMAL" property="actualClearingAmount" />
@@ -26,8 +27,9 @@
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, bill_status, trade_date, clearing_bill_code, clearing_time, merchant_id, order_source,
receivable_amount, should_clearing_amount, actual_clearing_amount, fee_amount, withdrawable_amount,
withdraw_code, create_by, create_time, update_by, update_time, del_flag
settle_amount, receivable_amount, should_clearing_amount, actual_clearing_amount,
fee_amount, withdrawable_amount, withdraw_code, create_by, create_time, update_by,
update_time, del_flag
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
<!--@mbg.generated-->
@@ -41,23 +43,6 @@
delete from clearing_bill_info
where id = #{id,jdbcType=INTEGER}
</delete>
<insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.jsowell.pile.domain.ClearingBillInfo" useGeneratedKeys="true">
<!--@mbg.generated-->
insert into clearing_bill_info (bill_status, trade_date, clearing_bill_code,
clearing_time, merchant_id, order_source,
receivable_amount, should_clearing_amount,
actual_clearing_amount, fee_amount, withdrawable_amount,
withdraw_code, create_by, create_time,
update_by, update_time, del_flag
)
values (#{billStatus,jdbcType=VARCHAR}, #{tradeDate,jdbcType=VARCHAR}, #{clearingBillCode,jdbcType=VARCHAR},
#{clearingTime,jdbcType=TIMESTAMP}, #{merchantId,jdbcType=VARCHAR}, #{orderSource,jdbcType=VARCHAR},
#{receivableAmount,jdbcType=DECIMAL}, #{shouldClearingAmount,jdbcType=DECIMAL},
#{actualClearingAmount,jdbcType=DECIMAL}, #{feeAmount,jdbcType=DECIMAL}, #{withdrawableAmount,jdbcType=DECIMAL},
#{withdrawCode,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP},
#{updateBy,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP}, #{delFlag,jdbcType=VARCHAR}
)
</insert>
<insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.jsowell.pile.domain.ClearingBillInfo" useGeneratedKeys="true">
<!--@mbg.generated-->
insert into clearing_bill_info
@@ -80,6 +65,9 @@
<if test="orderSource != null">
order_source,
</if>
<if test="settleAmount != null">
settle_amount,
</if>
<if test="receivableAmount != null">
receivable_amount,
</if>
@@ -133,6 +121,9 @@
<if test="orderSource != null">
#{orderSource,jdbcType=VARCHAR},
</if>
<if test="settleAmount != null">
#{settleAmount,jdbcType=DECIMAL},
</if>
<if test="receivableAmount != null">
#{receivableAmount,jdbcType=DECIMAL},
</if>
@@ -190,6 +181,9 @@
<if test="orderSource != null">
order_source = #{orderSource,jdbcType=VARCHAR},
</if>
<if test="settleAmount != null">
settle_amount = #{settleAmount,jdbcType=DECIMAL},
</if>
<if test="receivableAmount != null">
receivable_amount = #{receivableAmount,jdbcType=DECIMAL},
</if>
@@ -226,28 +220,6 @@
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.jsowell.pile.domain.ClearingBillInfo">
<!--@mbg.generated-->
update clearing_bill_info
set bill_status = #{billStatus,jdbcType=VARCHAR},
trade_date = #{tradeDate,jdbcType=VARCHAR},
clearing_bill_code = #{clearingBillCode,jdbcType=VARCHAR},
clearing_time = #{clearingTime,jdbcType=TIMESTAMP},
merchant_id = #{merchantId,jdbcType=VARCHAR},
order_source = #{orderSource,jdbcType=VARCHAR},
receivable_amount = #{receivableAmount,jdbcType=DECIMAL},
should_clearing_amount = #{shouldClearingAmount,jdbcType=DECIMAL},
actual_clearing_amount = #{actualClearingAmount,jdbcType=DECIMAL},
fee_amount = #{feeAmount,jdbcType=DECIMAL},
withdrawable_amount = #{withdrawableAmount,jdbcType=DECIMAL},
withdraw_code = #{withdrawCode,jdbcType=VARCHAR},
create_by = #{createBy,jdbcType=VARCHAR},
create_time = #{createTime,jdbcType=TIMESTAMP},
update_by = #{updateBy,jdbcType=VARCHAR},
update_time = #{updateTime,jdbcType=TIMESTAMP},
del_flag = #{delFlag,jdbcType=VARCHAR}
where id = #{id,jdbcType=INTEGER}
</update>
<update id="updateBatch" parameterType="java.util.List">
<!--@mbg.generated-->
update clearing_bill_info
@@ -282,6 +254,11 @@
when id = #{item.id,jdbcType=INTEGER} then #{item.orderSource,jdbcType=VARCHAR}
</foreach>
</trim>
<trim prefix="settle_amount = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=INTEGER} then #{item.settleAmount,jdbcType=DECIMAL}
</foreach>
</trim>
<trim prefix="receivable_amount = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=INTEGER} then #{item.receivableAmount,jdbcType=DECIMAL}
@@ -389,6 +366,13 @@
</if>
</foreach>
</trim>
<trim prefix="settle_amount = case" suffix="end,">
<foreach collection="list" index="index" item="item">
<if test="item.settleAmount != null">
when id = #{item.id,jdbcType=INTEGER} then #{item.settleAmount,jdbcType=DECIMAL}
</if>
</foreach>
</trim>
<trim prefix="receivable_amount = case" suffix="end,">
<foreach collection="list" index="index" item="item">
<if test="item.receivableAmount != null">
@@ -476,18 +460,19 @@
<!--@mbg.generated-->
insert into clearing_bill_info
(bill_status, trade_date, clearing_bill_code, clearing_time, merchant_id, order_source,
receivable_amount, should_clearing_amount, actual_clearing_amount, fee_amount,
withdrawable_amount, withdraw_code, create_by, create_time, update_by, update_time,
del_flag)
settle_amount, receivable_amount, should_clearing_amount, actual_clearing_amount,
fee_amount, withdrawable_amount, withdraw_code, create_by, create_time, update_by,
update_time, del_flag)
values
<foreach collection="list" item="item" separator=",">
(#{item.billStatus,jdbcType=VARCHAR}, #{item.tradeDate,jdbcType=VARCHAR}, #{item.clearingBillCode,jdbcType=VARCHAR},
#{item.clearingTime,jdbcType=TIMESTAMP}, #{item.merchantId,jdbcType=VARCHAR}, #{item.orderSource,jdbcType=VARCHAR},
#{item.receivableAmount,jdbcType=DECIMAL}, #{item.shouldClearingAmount,jdbcType=DECIMAL},
#{item.actualClearingAmount,jdbcType=DECIMAL}, #{item.feeAmount,jdbcType=DECIMAL},
#{item.withdrawableAmount,jdbcType=DECIMAL}, #{item.withdrawCode,jdbcType=VARCHAR},
#{item.createBy,jdbcType=VARCHAR}, #{item.createTime,jdbcType=TIMESTAMP}, #{item.updateBy,jdbcType=VARCHAR},
#{item.updateTime,jdbcType=TIMESTAMP}, #{item.delFlag,jdbcType=VARCHAR})
#{item.settleAmount,jdbcType=DECIMAL}, #{item.receivableAmount,jdbcType=DECIMAL},
#{item.shouldClearingAmount,jdbcType=DECIMAL}, #{item.actualClearingAmount,jdbcType=DECIMAL},
#{item.feeAmount,jdbcType=DECIMAL}, #{item.withdrawableAmount,jdbcType=DECIMAL},
#{item.withdrawCode,jdbcType=VARCHAR}, #{item.createBy,jdbcType=VARCHAR}, #{item.createTime,jdbcType=TIMESTAMP},
#{item.updateBy,jdbcType=VARCHAR}, #{item.updateTime,jdbcType=TIMESTAMP}, #{item.delFlag,jdbcType=VARCHAR}
)
</foreach>
</insert>
<insert id="insertOrUpdate" keyColumn="id" keyProperty="id" parameterType="com.jsowell.pile.domain.ClearingBillInfo" useGeneratedKeys="true">
@@ -503,6 +488,7 @@
clearing_time,
merchant_id,
order_source,
settle_amount,
receivable_amount,
should_clearing_amount,
actual_clearing_amount,
@@ -526,6 +512,7 @@
#{clearingTime,jdbcType=TIMESTAMP},
#{merchantId,jdbcType=VARCHAR},
#{orderSource,jdbcType=VARCHAR},
#{settleAmount,jdbcType=DECIMAL},
#{receivableAmount,jdbcType=DECIMAL},
#{shouldClearingAmount,jdbcType=DECIMAL},
#{actualClearingAmount,jdbcType=DECIMAL},
@@ -549,6 +536,7 @@
clearing_time = #{clearingTime,jdbcType=TIMESTAMP},
merchant_id = #{merchantId,jdbcType=VARCHAR},
order_source = #{orderSource,jdbcType=VARCHAR},
settle_amount = #{settleAmount,jdbcType=DECIMAL},
receivable_amount = #{receivableAmount,jdbcType=DECIMAL},
should_clearing_amount = #{shouldClearingAmount,jdbcType=DECIMAL},
actual_clearing_amount = #{actualClearingAmount,jdbcType=DECIMAL},
@@ -587,6 +575,9 @@
<if test="orderSource != null">
order_source,
</if>
<if test="settleAmount != null">
settle_amount,
</if>
<if test="receivableAmount != null">
receivable_amount,
</if>
@@ -644,6 +635,9 @@
<if test="orderSource != null">
#{orderSource,jdbcType=VARCHAR},
</if>
<if test="settleAmount != null">
#{settleAmount,jdbcType=DECIMAL},
</if>
<if test="receivableAmount != null">
#{receivableAmount,jdbcType=DECIMAL},
</if>
@@ -701,6 +695,9 @@
<if test="orderSource != null">
order_source = #{orderSource,jdbcType=VARCHAR},
</if>
<if test="settleAmount != null">
settle_amount = #{settleAmount,jdbcType=DECIMAL},
</if>
<if test="receivableAmount != null">
receivable_amount = #{receivableAmount,jdbcType=DECIMAL},
</if>