提交 d3dfeb7f authored 作者: huyufan's avatar huyufan

APP司机账户

上级 8fc48463
...@@ -33,6 +33,7 @@ import java.time.LocalDateTime; ...@@ -33,6 +33,7 @@ import java.time.LocalDateTime;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.function.BiConsumer; import java.util.function.BiConsumer;
import java.util.function.Consumer;
/** /**
* @author kavin * @author kavin
...@@ -44,7 +45,7 @@ import java.util.function.BiConsumer; ...@@ -44,7 +45,7 @@ import java.util.function.BiConsumer;
@Slf4j @Slf4j
public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriverRunningWaterRecordService, InitializingBean { public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriverRunningWaterRecordService, InitializingBean {
private final static Map<Integer, BiConsumer<Long, BigDecimal>> strategyMap = new HashMap<>(); private final static Map<Integer, Consumer<SettlementDriverDetail>> strategyMap = new HashMap<>();
private final NetworkDriverRunningWaterRecordDao networkDriverRunningWaterRecordDao; private final NetworkDriverRunningWaterRecordDao networkDriverRunningWaterRecordDao;
...@@ -68,14 +69,14 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver ...@@ -68,14 +69,14 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void generateSettlementRunningWaterRecord(Long userNo, BigDecimal money) { public void generateSettlementRunningWaterRecord(SettlementDriverDetail settlementDriverDetail) {
log.info("运单同步网络货运生成司机运单结算流水"); log.info("运单同步网络货运生成司机运单结算流水");
NetworkDriverAccount networkDriverAccount = networkDriverAccountDao.getOneByField(NetworkDriverAccount::getDriverUserNo, userNo).get(); NetworkDriverAccount networkDriverAccount = networkDriverAccountDao.getOneByField(NetworkDriverAccount::getDriverUserNo, settlementDriverDetail.getDriverUserNo()).get();
log.info("查询出NetworkDriverAccount{}", JSONUtil.parse(networkDriverAccount)); log.info("查询出NetworkDriverAccount{}", JSONUtil.parse(networkDriverAccount));
NetworkDriverAccount build = NetworkDriverAccount.builder().id(networkDriverAccount.getId()) NetworkDriverAccount build = NetworkDriverAccount.builder().id(networkDriverAccount.getId())
.usableBalance(money) .usableBalance(settlementDriverDetail.getPrepayFreight())
.frozenBalance(BigDecimal.ZERO) .frozenBalance(BigDecimal.ZERO)
.accountBalance(money).build(); .accountBalance(settlementDriverDetail.getPrepayFreight()).build();
while (true) { while (true) {
NetworkDriverAccount account = networkDriverAccountDao.getEntityByKey(build.getId()).get(); NetworkDriverAccount account = networkDriverAccountDao.getEntityByKey(build.getId()).get();
build.setModifiedTime(account.getModifiedTime()); build.setModifiedTime(account.getModifiedTime());
...@@ -85,7 +86,7 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver ...@@ -85,7 +86,7 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver
account = networkDriverAccountDao.getEntityByKey(build.getId()).get(); account = networkDriverAccountDao.getEntityByKey(build.getId()).get();
NetworkDriverRunningWaterRecord entity = NetworkDriverRunningWaterRecord.builder() NetworkDriverRunningWaterRecord entity = NetworkDriverRunningWaterRecord.builder()
.usableBalance(account.getUsableBalance()) .usableBalance(account.getUsableBalance())
.alterationBalance(money).accountBalance(account.getAccountBalance()) .alterationBalance(settlementDriverDetail.getPrepayFreight()).accountBalance(account.getAccountBalance())
.frozenBalance(account.getFrozenBalance()).createBy("系统") .frozenBalance(account.getFrozenBalance()).createBy("系统")
.fundType(NetworkDriverAccountEnum.FundType.INCOME.getCode()) .fundType(NetworkDriverAccountEnum.FundType.INCOME.getCode())
.fundTypeMsg(NetworkDriverAccountEnum.FundType.INCOME.getMsg()) .fundTypeMsg(NetworkDriverAccountEnum.FundType.INCOME.getMsg())
...@@ -110,14 +111,14 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver ...@@ -110,14 +111,14 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver
* @param money * @param money
*/ */
@Override @Override
public void generateCaseOutFrozenRunningWaterRecord(Long userNo, BigDecimal money) { public void generateCaseOutFrozenRunningWaterRecord(SettlementDriverDetail settlementDriverDetail) {
log.info("运单同步网络货运后司机运单提现冻结流水"); log.info("运单同步网络货运后司机运单提现冻结流水");
NetworkDriverAccount networkDriverAccount = networkDriverAccountDao.getOneByField(NetworkDriverAccount::getDriverUserNo, userNo).get(); NetworkDriverAccount networkDriverAccount = networkDriverAccountDao.getOneByField(NetworkDriverAccount::getDriverUserNo, settlementDriverDetail.getDriverUserNo()).get();
log.info("查询出NetworkDriverAccount{}", JSONUtil.parse(networkDriverAccount)); log.info("查询出NetworkDriverAccount{}", JSONUtil.parse(networkDriverAccount));
NetworkDriverAccount build = NetworkDriverAccount.builder().id(networkDriverAccount.getId()) NetworkDriverAccount build = NetworkDriverAccount.builder().id(networkDriverAccount.getId())
.frozenBalance(money) .frozenBalance(settlementDriverDetail.getPrepayFreight())
.accountBalance(BigDecimal.ZERO) .accountBalance(BigDecimal.ZERO)
.usableBalance(money).build(); .usableBalance(settlementDriverDetail.getPrepayFreight()).build();
while (true) { while (true) {
NetworkDriverAccount account = networkDriverAccountDao.getEntityByKey(build.getId()).get(); NetworkDriverAccount account = networkDriverAccountDao.getEntityByKey(build.getId()).get();
build.setModifiedTime(account.getModifiedTime()); build.setModifiedTime(account.getModifiedTime());
...@@ -127,7 +128,7 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver ...@@ -127,7 +128,7 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver
account = networkDriverAccountDao.getEntityByKey(build.getId()).get(); account = networkDriverAccountDao.getEntityByKey(build.getId()).get();
NetworkDriverRunningWaterRecord entity = NetworkDriverRunningWaterRecord.builder() NetworkDriverRunningWaterRecord entity = NetworkDriverRunningWaterRecord.builder()
.usableBalance(account.getUsableBalance()) .usableBalance(account.getUsableBalance())
.alterationBalance(money).accountBalance(account.getAccountBalance()) .alterationBalance(settlementDriverDetail.getPrepayFreight()).accountBalance(account.getAccountBalance())
.frozenBalance(account.getFrozenBalance()).createBy("系统") .frozenBalance(account.getFrozenBalance()).createBy("系统")
.fundType(NetworkDriverAccountEnum.FundType.FROZEN.getCode()) .fundType(NetworkDriverAccountEnum.FundType.FROZEN.getCode())
.fundTypeMsg(NetworkDriverAccountEnum.FundType.FROZEN.getMsg()) .fundTypeMsg(NetworkDriverAccountEnum.FundType.FROZEN.getMsg())
...@@ -146,13 +147,13 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver ...@@ -146,13 +147,13 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver
} }
@Override @Override
public void generateCaseOutSuccessRunningWaterRecord(Long userNo, BigDecimal money) { public void generateCaseOutSuccessRunningWaterRecord(SettlementDriverDetail settlementDriverDetail) {
NetworkDriverAccount networkDriverAccount = networkDriverAccountDao.getOneByField(NetworkDriverAccount::getDriverUserNo, userNo).get(); NetworkDriverAccount networkDriverAccount = networkDriverAccountDao.getOneByField(NetworkDriverAccount::getDriverUserNo, settlementDriverDetail.getDriverUserNo()).get();
NetworkDriverAccount build = NetworkDriverAccount.builder().id(networkDriverAccount.getId()) NetworkDriverAccount build = NetworkDriverAccount.builder().id(networkDriverAccount.getId())
.frozenBalance(money.negate()) .frozenBalance(settlementDriverDetail.getPrepayFreight().negate())
.usableBalance(BigDecimal.ZERO) .usableBalance(BigDecimal.ZERO)
.accountBalance(money).build(); .accountBalance(settlementDriverDetail.getPrepayFreight()).build();
while (true) { while (true) {
NetworkDriverAccount account = networkDriverAccountDao.getEntityByKey(build.getId()).get(); NetworkDriverAccount account = networkDriverAccountDao.getEntityByKey(build.getId()).get();
build.setModifiedTime(account.getModifiedTime()); build.setModifiedTime(account.getModifiedTime());
...@@ -161,7 +162,7 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver ...@@ -161,7 +162,7 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver
account = networkDriverAccountDao.getEntityByKey(build.getId()).get(); account = networkDriverAccountDao.getEntityByKey(build.getId()).get();
NetworkDriverRunningWaterRecord entity = NetworkDriverRunningWaterRecord.builder() NetworkDriverRunningWaterRecord entity = NetworkDriverRunningWaterRecord.builder()
.usableBalance(account.getUsableBalance()) .usableBalance(account.getUsableBalance())
.alterationBalance(money).accountBalance(account.getAccountBalance()) .alterationBalance(settlementDriverDetail.getPrepayFreight()).accountBalance(account.getAccountBalance())
.frozenBalance(account.getFrozenBalance()).createBy("系统") .frozenBalance(account.getFrozenBalance()).createBy("系统")
.fundType(NetworkDriverAccountEnum.FundType.EXPENDITURE.getCode()) .fundType(NetworkDriverAccountEnum.FundType.EXPENDITURE.getCode())
.fundTypeMsg(NetworkDriverAccountEnum.FundType.EXPENDITURE.getMsg()) .fundTypeMsg(NetworkDriverAccountEnum.FundType.EXPENDITURE.getMsg())
...@@ -180,11 +181,11 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver ...@@ -180,11 +181,11 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver
} }
@Override @Override
public void generateNetworkDriverRunningWaterRecord(Long userNo, BigDecimal money, Integer runningWaterType) { public void generateNetworkDriverRunningWaterRecord(SettlementDriverDetail settlementDriverDetail, Integer runningWaterType) {
if (NetworkDriverAccountEnum.RunningWaterStatus.SETTLEMENT.getCode().equals(runningWaterType)) { if (NetworkDriverAccountEnum.RunningWaterStatus.SETTLEMENT.getCode().equals(runningWaterType)) {
log.info("执行生成网络货运钱包相关,参数userNo:{},money{},runningWaterType:{}", userNo, money, runningWaterType); log.info("执行生成网络货运钱包相关,参数userNo:{},money{},runningWaterType:{}", settlementDriverDetail.getDriverUserNo(), settlementDriverDetail.getPrepayFreight(), runningWaterType);
strategyMap.get(NetworkDriverAccountEnum.RunningWaterStatus.SETTLEMENT.getCode()).accept(userNo, money); strategyMap.get(NetworkDriverAccountEnum.RunningWaterStatus.SETTLEMENT.getCode()).accept(settlementDriverDetail);
strategyMap.get(NetworkDriverAccountEnum.RunningWaterStatus.CASE_OUT_FROZEN.getCode()).accept(userNo, money); strategyMap.get(NetworkDriverAccountEnum.RunningWaterStatus.CASE_OUT_FROZEN.getCode()).accept(settlementDriverDetail);
} }
} }
......
...@@ -123,7 +123,7 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -123,7 +123,7 @@ public class SettlementServiceImpl implements SettlementService {
BigDecimal subtract = frozen.subtract(takeOut); BigDecimal subtract = frozen.subtract(takeOut);
log.info("冻结预付运费:{}, 扣除的流水总和:{}", frozen, takeOut); log.info("冻结预付运费:{}, 扣除的流水总和:{}", frozen, takeOut);
invoiceType = SettlementOwnerEnum.InvoiceType.ONLINE.getCode(); invoiceType = SettlementOwnerEnum.InvoiceType.ONLINE.getCode();
settlementDriverDetail.setPrepayFreight(ans);
//冻结的预付运费为0 或者 此刻预付运费也可能为0,那么就不用生成扣除相关流水逻辑 //冻结的预付运费为0 或者 此刻预付运费也可能为0,那么就不用生成扣除相关流水逻辑
if (subtract.compareTo(BigDecimal.ZERO) <= 0 || ans.compareTo(BigDecimal.ZERO) == 0) { if (subtract.compareTo(BigDecimal.ZERO) <= 0 || ans.compareTo(BigDecimal.ZERO) == 0) {
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO); settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
...@@ -135,7 +135,7 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -135,7 +135,7 @@ public class SettlementServiceImpl implements SettlementService {
try { try {
//网络货运钱包账户 //网络货运钱包账户
networkDriverRunningWaterRecordService.generateNetworkDriverRunningWaterRecord( networkDriverRunningWaterRecordService.generateNetworkDriverRunningWaterRecord(
settlementDriverDetail.getDriverUserNo(), settlementDriverDetail.getPrepayFreight(), settlementDriverDetail,
NetworkDriverAccountEnum.RunningWaterStatus.SETTLEMENT.getCode() NetworkDriverAccountEnum.RunningWaterStatus.SETTLEMENT.getCode()
); );
//生成提现记录 //生成提现记录
......
...@@ -19,13 +19,13 @@ public interface NetworkDriverRunningWaterRecordService { ...@@ -19,13 +19,13 @@ public interface NetworkDriverRunningWaterRecordService {
IPage<NetworkDriverRunningWaterRecordVO> networkDriverRunningWaterRecordList(PageNetworkAccountInfoListParam param); IPage<NetworkDriverRunningWaterRecordVO> networkDriverRunningWaterRecordList(PageNetworkAccountInfoListParam param);
void generateSettlementRunningWaterRecord(Long userNo, BigDecimal money); void generateSettlementRunningWaterRecord(SettlementDriverDetail settlementDriverDetail);
void generateCaseOutFrozenRunningWaterRecord(Long userNo, BigDecimal money); void generateCaseOutFrozenRunningWaterRecord(SettlementDriverDetail settlementDriverDetail);
void generateCaseOutSuccessRunningWaterRecord(Long userNo, BigDecimal money); void generateCaseOutSuccessRunningWaterRecord(SettlementDriverDetail settlementDriverDetail);
void generateNetworkDriverRunningWaterRecord(Long userNo, BigDecimal money, Integer runningWaterType); void generateNetworkDriverRunningWaterRecord(SettlementDriverDetail settlementDriverDetail, Integer runningWaterType);
IPage<APPNetworkDriverRunningWaterRecordVO> pageFrozenList(NetworkDriverPageParam param); IPage<APPNetworkDriverRunningWaterRecordVO> pageFrozenList(NetworkDriverPageParam param);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论