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

APP司机账户

上级 7dc98e68
...@@ -58,4 +58,25 @@ public enum NetworkDriverAccountEnum { ...@@ -58,4 +58,25 @@ public enum NetworkDriverAccountEnum {
return this.msg; return this.msg;
} }
} }
@Getter
@AllArgsConstructor
public enum CaseOutRecordStatus {
WAIT_PLATFORM_PAY(10, "待平台付款"),
PAYED(20, "已付款"),
;
private final Integer code;
private final String msg;
public static Optional<CaseOutRecordStatus> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code.equals(code)).findFirst();
}
public Integer getCode() {
return this.code;
}
public String getMsg() {
return this.msg;
}
}
} }
...@@ -44,39 +44,24 @@ public class NetworkCaseOutRecordVO { ...@@ -44,39 +44,24 @@ public class NetworkCaseOutRecordVO {
@ApiModelProperty("状态 10:待平台付款 20:已付款") @ApiModelProperty("状态 10:待平台付款 20:已付款")
private Integer status; private Integer status;
@ApiModelProperty("状态简介")
private String statusMsg;
@ApiModelProperty("平台") @ApiModelProperty("平台")
private String platform; private String platform;
@ApiModelProperty("")
private Long relationId;
@ApiModelProperty("订单ID")
private Integer orderId;
@ApiModelProperty("订单编号") @ApiModelProperty("订单编号")
private String orderNo; private String orderNo;
@ApiModelProperty("运单ID") @ApiModelProperty("货单编号")
private Integer orderChildId; private String orderGoodsNo;
@ApiModelProperty("运单编号") @ApiModelProperty("运单编号")
private String orderChildNo; private String childNo;
@ApiModelProperty("变动金额") @ApiModelProperty("变动金额")
private BigDecimal alterationBalance; private BigDecimal alterationBalance;
@ApiModelProperty("冻结金额")
private BigDecimal frozenBalance;
@ApiModelProperty("可用余额")
private BigDecimal usableBalance;
@ApiModelProperty("账户余额")
private BigDecimal accountBalance;
@ApiModelProperty("扣除金额")
private BigDecimal takeOutBalance;
@ApiModelProperty("操作人") @ApiModelProperty("操作人")
private String createBy; private String createBy;
......
...@@ -25,4 +25,12 @@ public class NetworkCaseOutRecordDaoImpl extends BaseDaoImpl<NetworkCaseOutRecor ...@@ -25,4 +25,12 @@ public class NetworkCaseOutRecordDaoImpl extends BaseDaoImpl<NetworkCaseOutRecor
Page<OwnerAccountVO> page = Page.of(param.getPage(), param.getPageSize()); Page<OwnerAccountVO> page = Page.of(param.getPage(), param.getPageSize());
return baseMapper.networkCaseOutRecord(page, param); return baseMapper.networkCaseOutRecord(page, param);
} }
@Override
public void updateStatus(String childNo, Integer code, String msg) {
update(lUdWrapper().eq(NetworkCaseOutRecord::getChildNo, childNo)
.set(NetworkCaseOutRecord::getStatus, code)
.set(NetworkCaseOutRecord::getStatusMsg, msg)
);
}
} }
...@@ -17,4 +17,6 @@ public interface NetworkCaseOutRecordDao extends BaseDao<NetworkCaseOutRecordMap ...@@ -17,4 +17,6 @@ public interface NetworkCaseOutRecordDao extends BaseDao<NetworkCaseOutRecordMap
IPage<NetworkCaseOutRecordVO> networkCaseOutRecord(PageNetworkCaseOutRecordListParam param); IPage<NetworkCaseOutRecordVO> networkCaseOutRecord(PageNetworkCaseOutRecordListParam param);
void updateStatus(String childNo, Integer code, String msg);
} }
...@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName; ...@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.msl.common.config.KeyColumn; import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey; import com.msl.common.model.HasKey;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
...@@ -23,6 +24,7 @@ import java.time.LocalDateTime; ...@@ -23,6 +24,7 @@ import java.time.LocalDateTime;
@Setter @Setter
@Accessors(chain = true) @Accessors(chain = true)
@TableName("network_case_out_record") @TableName("network_case_out_record")
@Builder
public class NetworkCaseOutRecord implements HasKey<Integer> { public class NetworkCaseOutRecord implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO)
...@@ -60,50 +62,30 @@ public class NetworkCaseOutRecord implements HasKey<Integer> { ...@@ -60,50 +62,30 @@ public class NetworkCaseOutRecord implements HasKey<Integer> {
@ApiModelProperty("状态 10:待平台付款 20:已付款") @ApiModelProperty("状态 10:待平台付款 20:已付款")
private Integer status; private Integer status;
@TableField("status_msg")
@ApiModelProperty("状态简介")
private String statusMsg;
@TableField("platform") @TableField("platform")
@ApiModelProperty("平台") @ApiModelProperty("平台")
private String platform; private String platform;
@TableField("relation_id")
@ApiModelProperty("")
private Long relationId;
@TableField("order_id")
@ApiModelProperty("订单ID")
private Integer orderId;
@TableField("order_no") @TableField("order_no")
@ApiModelProperty("订单编号") @ApiModelProperty("订单编号")
private String orderNo; private String orderNo;
@TableField("order_child_id") @TableField("order_goods_no")
@ApiModelProperty("运单ID") @ApiModelProperty("货单编号")
private Integer orderChildId; private String orderGoodsNo;
@TableField("order_child_no") @TableField("child_no")
@ApiModelProperty("运单编号") @ApiModelProperty("运单编号")
private String orderChildNo; private String childNo;
@TableField("alteration_balance") @TableField("alteration_balance")
@ApiModelProperty("变动金额") @ApiModelProperty("变动金额")
private BigDecimal alterationBalance; private BigDecimal alterationBalance;
@TableField("frozen_balance")
@ApiModelProperty("冻结金额")
private BigDecimal frozenBalance;
@TableField("usable_balance")
@ApiModelProperty("可用余额")
private BigDecimal usableBalance;
@TableField("account_balance")
@ApiModelProperty("账户余额")
private BigDecimal accountBalance;
@TableField("take_out_balance")
@ApiModelProperty("扣除金额")
private BigDecimal takeOutBalance;
@TableField("create_by") @TableField("create_by")
@ApiModelProperty("操作人") @ApiModelProperty("操作人")
private String createBy; private String createBy;
......
...@@ -2,16 +2,24 @@ package com.clx.performance.service.impl.settle; ...@@ -2,16 +2,24 @@ package com.clx.performance.service.impl.settle;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.component.IdGenerateSnowFlake; import com.clx.performance.component.IdGenerateSnowFlake;
import com.clx.performance.dao.settle.NetworkCaseOutRecordDao;
import com.clx.performance.dao.settle.NetworkDriverAccountDao; import com.clx.performance.dao.settle.NetworkDriverAccountDao;
import com.clx.performance.dao.settle.NetworkDriverRunningWaterRecordDao; import com.clx.performance.dao.settle.NetworkDriverRunningWaterRecordDao;
import com.clx.performance.enums.NetworkDriverAccountEnum; import com.clx.performance.enums.NetworkDriverAccountEnum;
import com.clx.performance.model.settle.NetworkCaseOutRecord;
import com.clx.performance.model.settle.NetworkDriverAccount; import com.clx.performance.model.settle.NetworkDriverAccount;
import com.clx.performance.model.settle.NetworkDriverRunningWaterRecord; import com.clx.performance.model.settle.NetworkDriverRunningWaterRecord;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.param.app.NetworkDriverPageParam; import com.clx.performance.param.app.NetworkDriverPageParam;
import com.clx.performance.param.pc.PageNetworkAccountInfoListParam; import com.clx.performance.param.pc.PageNetworkAccountInfoListParam;
import com.clx.performance.service.settle.NetworkDriverRunningWaterRecordService; import com.clx.performance.service.settle.NetworkDriverRunningWaterRecordService;
import com.clx.performance.vo.app.APPNetworkDriverRunningWaterRecordVO; import com.clx.performance.vo.app.APPNetworkDriverRunningWaterRecordVO;
import com.clx.performance.vo.pc.NetworkDriverRunningWaterRecordVO; import com.clx.performance.vo.pc.NetworkDriverRunningWaterRecordVO;
import com.clx.user.feign.DriverFeign;
import com.clx.user.vo.feign.BankCardVO;
import com.msl.common.base.Optional;
import com.msl.common.enums.ResultCodeEnum;
import com.msl.common.result.Result;
import com.msl.user.utils.TokenUtil; import com.msl.user.utils.TokenUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -35,7 +43,7 @@ import java.util.function.BiConsumer; ...@@ -35,7 +43,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<NetworkDriverAccount, BigDecimal>> strategyMap = new HashMap<>(); private final static Map<Integer, BiConsumer<Long, BigDecimal>> strategyMap = new HashMap<>();
private final NetworkDriverRunningWaterRecordDao networkDriverRunningWaterRecordDao; private final NetworkDriverRunningWaterRecordDao networkDriverRunningWaterRecordDao;
...@@ -43,14 +51,25 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver ...@@ -43,14 +51,25 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver
private final IdGenerateSnowFlake idGenerateSnowFlake; private final IdGenerateSnowFlake idGenerateSnowFlake;
private final DriverFeign driverFeign;
private final NetworkCaseOutRecordDao networkCaseOutRecordDao;
@Override @Override
public IPage<NetworkDriverRunningWaterRecordVO> networkDriverRunningWaterRecordList(PageNetworkAccountInfoListParam param) { public IPage<NetworkDriverRunningWaterRecordVO> networkDriverRunningWaterRecordList(PageNetworkAccountInfoListParam param) {
return networkDriverRunningWaterRecordDao.networkDriverRunningWaterRecordDao(param); return networkDriverRunningWaterRecordDao.networkDriverRunningWaterRecordDao(param);
} }
/**
* 运单同步网络货运生成司机运单结算流水
* @param userNo
* @param money
*/
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void generateSettlementRunningWaterRecord(NetworkDriverAccount networkDriverAccount, BigDecimal money) { public void generateSettlementRunningWaterRecord(Long userNo, BigDecimal money) {
NetworkDriverAccount networkDriverAccount = networkDriverAccountDao.getOneByField(NetworkDriverAccount::getDriverUserNo, userNo).get();
NetworkDriverAccount build = NetworkDriverAccount.builder().id(networkDriverAccount.getId()) NetworkDriverAccount build = NetworkDriverAccount.builder().id(networkDriverAccount.getId())
.usableBalance(money) .usableBalance(money)
.frozenBalance(BigDecimal.ZERO) .frozenBalance(BigDecimal.ZERO)
...@@ -82,8 +101,15 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver ...@@ -82,8 +101,15 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver
} }
/**
* 运单同步网络货运后司机运单提现冻结流水
* @param userNo
* @param money
*/
@Override @Override
public void generateCaseOutFrozenRunningWaterRecord(NetworkDriverAccount networkDriverAccount, BigDecimal money) { public void generateCaseOutFrozenRunningWaterRecord(Long userNo, BigDecimal money) {
NetworkDriverAccount networkDriverAccount = networkDriverAccountDao.getOneByField(NetworkDriverAccount::getDriverUserNo, userNo).get();
NetworkDriverAccount build = NetworkDriverAccount.builder().id(networkDriverAccount.getId()) NetworkDriverAccount build = NetworkDriverAccount.builder().id(networkDriverAccount.getId())
.frozenBalance(money) .frozenBalance(money)
.accountBalance(BigDecimal.ZERO) .accountBalance(BigDecimal.ZERO)
...@@ -115,7 +141,9 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver ...@@ -115,7 +141,9 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver
} }
@Override @Override
public void generateCaseOutSuccessRunningWaterRecord(NetworkDriverAccount networkDriverAccount, BigDecimal money) { public void generateCaseOutSuccessRunningWaterRecord(Long userNo, BigDecimal money) {
NetworkDriverAccount networkDriverAccount = networkDriverAccountDao.getOneByField(NetworkDriverAccount::getDriverUserNo, userNo).get();
NetworkDriverAccount build = NetworkDriverAccount.builder().id(networkDriverAccount.getId()) NetworkDriverAccount build = NetworkDriverAccount.builder().id(networkDriverAccount.getId())
.frozenBalance(money.negate()) .frozenBalance(money.negate())
.usableBalance(BigDecimal.ZERO) .usableBalance(BigDecimal.ZERO)
...@@ -147,8 +175,11 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver ...@@ -147,8 +175,11 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver
} }
@Override @Override
public void generateNetworkDriverRunningWaterRecord(NetworkDriverAccount networkDriverAccount, BigDecimal money, Integer runningWaterType) { public void generateNetworkDriverRunningWaterRecord(Long userNo, BigDecimal money, Integer runningWaterType) {
strategyMap.get(runningWaterType).accept(networkDriverAccount, money); if (NetworkDriverAccountEnum.RunningWaterStatus.SETTLEMENT.getCode().equals(runningWaterType)) {
strategyMap.get(NetworkDriverAccountEnum.RunningWaterStatus.SETTLEMENT.getCode()).accept(userNo, money);
strategyMap.get(NetworkDriverAccountEnum.RunningWaterStatus.CASE_OUT_FROZEN.getCode()).accept(userNo, money);
}
} }
@Override @Override
...@@ -165,6 +196,24 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver ...@@ -165,6 +196,24 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver
return networkDriverRunningWaterRecordDao.runningWaterList(param); return networkDriverRunningWaterRecordDao.runningWaterList(param);
} }
@Override
public void generateNetworkCaseOutRecord(SettlementDriverDetail settlementDriverDetail) {
BankCardVO bankCardVO = Optional.ofNullable(driverFeign.getDriverCardInfo(settlementDriverDetail.getDriverUserNo()))
.filter(Result::succeed).map(Result::getData).orElseThrow(ResultCodeEnum.FAIL);
NetworkCaseOutRecord build = NetworkCaseOutRecord.builder()
.caseOutNo(idGenerateSnowFlake.nextId(4L))
.driverUserNo(settlementDriverDetail.getDriverUserNo())
.driverUserName(settlementDriverDetail.getDriverName()).mobile(bankCardVO.getMobile())
.status(NetworkDriverAccountEnum.CaseOutRecordStatus.WAIT_PLATFORM_PAY.getCode())
.statusMsg(NetworkDriverAccountEnum.CaseOutRecordStatus.WAIT_PLATFORM_PAY.getMsg())
.bank(bankCardVO.getBank()).collectionBankCode(bankCardVO.getBankCode())
.payee(bankCardVO.getName()).alterationBalance(settlementDriverDetail.getPrepayFreight())
.orderNo(settlementDriverDetail.getOrderNo()).orderGoodsNo(settlementDriverDetail.getOrderGoodsNo())
.childNo(settlementDriverDetail.getChildNo())
.platform("网运平台").createBy("系统").build();
networkCaseOutRecordDao.saveEntity(build);
}
@Override @Override
public void afterPropertiesSet() throws Exception { public void afterPropertiesSet() throws Exception {
strategyMap.put(NetworkDriverAccountEnum.RunningWaterStatus.SETTLEMENT.getCode(), this::generateSettlementRunningWaterRecord); strategyMap.put(NetworkDriverAccountEnum.RunningWaterStatus.SETTLEMENT.getCode(), this::generateSettlementRunningWaterRecord);
...@@ -172,3 +221,4 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver ...@@ -172,3 +221,4 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver
strategyMap.put(NetworkDriverAccountEnum.RunningWaterStatus.CASE_OUT_SUCCESS.getCode(), this::generateCaseOutSuccessRunningWaterRecord); strategyMap.put(NetworkDriverAccountEnum.RunningWaterStatus.CASE_OUT_SUCCESS.getCode(), this::generateCaseOutSuccessRunningWaterRecord);
} }
} }
package com.clx.performance.service.impl.settle; package com.clx.performance.service.impl.settle;
import com.clx.performance.dao.settle.NetworkCaseOutRecordDao;
import com.clx.performance.dao.settle.OrderChildSyncTransportRecordDao; import com.clx.performance.dao.settle.OrderChildSyncTransportRecordDao;
import com.clx.performance.dto.PayStatusNotifyDTO; import com.clx.performance.dto.PayStatusNotifyDTO;
import com.clx.performance.enums.NetworkDriverAccountEnum;
import com.clx.performance.model.settle.OrderChildSyncTransportRecord; import com.clx.performance.model.settle.OrderChildSyncTransportRecord;
import com.clx.performance.model.settle.SettlementDriverDetail; import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.service.settle.OrderChildSyncTransportRecordService; import com.clx.performance.service.settle.OrderChildSyncTransportRecordService;
...@@ -25,6 +27,8 @@ public class OrderChildSyncTransportRecordServiceImpl implements OrderChildSyncT ...@@ -25,6 +27,8 @@ public class OrderChildSyncTransportRecordServiceImpl implements OrderChildSyncT
private final SettlementDriverDetailStruct struct; private final SettlementDriverDetailStruct struct;
private final NetworkCaseOutRecordDao networkCaseOutRecordDao;
@Override @Override
public void addOrderChildSyncTransportRecord(SettlementDriverDetail detail) { public void addOrderChildSyncTransportRecord(SettlementDriverDetail detail) {
OrderChildSyncTransportRecord record = struct.convertRecord(detail); OrderChildSyncTransportRecord record = struct.convertRecord(detail);
...@@ -37,5 +41,9 @@ public class OrderChildSyncTransportRecordServiceImpl implements OrderChildSyncT ...@@ -37,5 +41,9 @@ public class OrderChildSyncTransportRecordServiceImpl implements OrderChildSyncT
public void updateStatus(PayStatusNotifyDTO payStatusNotifyDTO) { public void updateStatus(PayStatusNotifyDTO payStatusNotifyDTO) {
String childNo = payStatusNotifyDTO.getChildNo(); String childNo = payStatusNotifyDTO.getChildNo();
orderChildSyncTransportRecordDao.updateStatus(childNo); orderChildSyncTransportRecordDao.updateStatus(childNo);
networkCaseOutRecordDao.updateStatus(payStatusNotifyDTO.getChildNo(),
NetworkDriverAccountEnum.CaseOutRecordStatus.PAYED.getCode(),
NetworkDriverAccountEnum.CaseOutRecordStatus.PAYED.getMsg()
);
} }
} }
...@@ -7,10 +7,12 @@ import com.clx.performance.dao.OrderChildDao; ...@@ -7,10 +7,12 @@ import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao; import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.OwnerAccountDao; import com.clx.performance.dao.OwnerAccountDao;
import com.clx.performance.dao.OwnerRunningWaterRecordDao; import com.clx.performance.dao.OwnerRunningWaterRecordDao;
import com.clx.performance.dao.settle.NetworkDriverAccountDao;
import com.clx.performance.dao.settle.SettlementDriverDetailDao; import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao; import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.dto.OrderChildSyncDTO; import com.clx.performance.dto.OrderChildSyncDTO;
import com.clx.performance.enums.IdTypeEnum; import com.clx.performance.enums.IdTypeEnum;
import com.clx.performance.enums.NetworkDriverAccountEnum;
import com.clx.performance.enums.OwnerAccountEnum; import com.clx.performance.enums.OwnerAccountEnum;
import com.clx.performance.enums.PerformanceResultEnum; import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.settle.SettlementOwnerDetailEnum; import com.clx.performance.enums.settle.SettlementOwnerDetailEnum;
...@@ -21,6 +23,8 @@ import com.clx.performance.model.OrderChild; ...@@ -21,6 +23,8 @@ import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.OwnerAccount; import com.clx.performance.model.OwnerAccount;
import com.clx.performance.model.OwnerRunningWaterRecord; import com.clx.performance.model.OwnerRunningWaterRecord;
import com.clx.performance.model.settle.NetworkCaseOutRecord;
import com.clx.performance.model.settle.NetworkDriverAccount;
import com.clx.performance.model.settle.SettlementDriverDetail; import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOwnerDetail; import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.param.feign.transport.ThirdOrderChildBrokerParam; import com.clx.performance.param.feign.transport.ThirdOrderChildBrokerParam;
...@@ -100,7 +104,6 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -100,7 +104,6 @@ public class SettlementServiceImpl implements SettlementService {
log.info("OrderChildSyncDTO信息为:{}", JSONUtil.parse(bean)); log.info("OrderChildSyncDTO信息为:{}", JSONUtil.parse(bean));
if (bean.getCode() == 0) { if (bean.getCode() == 0) {
Integer status = bean.getData().getStatus(); Integer status = bean.getData().getStatus();
if (status == 1) { if (status == 1) {
//通过风控 //通过风控
List<OwnerRunningWaterRecord> runningWaterRecordList = ownerRunningWaterRecordDao.getOwnerRunningWaterRecord(orderChild.getOrderNo()); List<OwnerRunningWaterRecord> runningWaterRecordList = ownerRunningWaterRecordDao.getOwnerRunningWaterRecord(orderChild.getOrderNo());
...@@ -125,51 +128,22 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -125,51 +128,22 @@ public class SettlementServiceImpl implements SettlementService {
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);
settlementDriverDetail.setPrepayFreightFlag(0); settlementDriverDetail.setPrepayFreightFlag(0);
} else { } else {
if (subtract.subtract(ans).compareTo(BigDecimal.ZERO) >= 0) { if (subtract.subtract(ans).compareTo(BigDecimal.ZERO) >= 0) {
OwnerAccount account = null; //账户扣钱并生成扣除流水
while (true) { generateTakeOutRunningWatter(orderChild, ans, settlementOwnerDetail, settlementDriverDetail);
account = ownerAccountDao.getAccountByOwnerUserNoAndAccountType(orderChild.getOwnerUserNo(), try {
OwnerAccountEnum.AccountTypeStatus.PREPAID_FREIGHT_ACCOUNT.getCode()); //网络货运钱包账户
OwnerAccount update = new OwnerAccount(); networkDriverRunningWaterRecordService.generateNetworkDriverRunningWaterRecord(
update.setId(account.getId()); settlementDriverDetail.getDriverUserNo(), settlementDriverDetail.getPrepayFreight(),
update.setAccountBalance(ans); NetworkDriverAccountEnum.RunningWaterStatus.SETTLEMENT.getCode()
update.setModifiedTime(account.getModifiedTime()); );
update.setFrozenBalance(ans); //生成提现记录
Integer i = ownerAccountDao.updateOwnerAccountForConfirm(update); networkDriverRunningWaterRecordService.generateNetworkCaseOutRecord(settlementDriverDetail);
if (null != i && i > 0) { }catch (Exception e) {
break; log.info("运单同步网络货运生成司机运单结算流水失败:{}", e.getMessage());
}
} }
account = ownerAccountDao.getAccountByOwnerUserNoAndAccountType(orderChild.getOwnerUserNo(),
OwnerAccountEnum.AccountTypeStatus.PREPAID_FREIGHT_ACCOUNT.getCode());
settlementOwnerDetail.setPrepayFreight(ans);
settlementDriverDetail.setPrepayFreightFlag(1);
settlementOwnerDetail.setFinalPaymentStatus(SettlementOwnerDetailEnum.FinalPaymentStatus.NO_REQUIRE.getCode());
//生成扣除流水
OwnerRunningWaterRecord runningWaterRecord = new OwnerRunningWaterRecord();
runningWaterRecord.setOwnerUserName(orderChild.getOwnerName());
runningWaterRecord.setMobile(orderChild.getDriverMobile());
runningWaterRecord.setCreateBy("系统");
runningWaterRecord.setOrderNo(orderChild.getOrderNo());
runningWaterRecord.setOrderChildId(orderChild.getId());
runningWaterRecord.setOrderChildNo(orderChild.getChildNo());
runningWaterRecord.setRelationId(null);
runningWaterRecord.setAlterationBalance(ans);
runningWaterRecord.setFrozenBalance(account.getFrozenBalance());
runningWaterRecord.setUsableBalance(account.getUsableBalance());
runningWaterRecord.setTakeOutBalance(ans);
runningWaterRecord.setAccountBalance(account.getAccountBalance());
runningWaterRecord.setOwnerUserNo(account.getOwnerUserNo());
runningWaterRecord.setAccountType(OwnerAccountEnum.AccountTypeStatus.PREPAID_FREIGHT_ACCOUNT.getCode());
runningWaterRecord.setRunningWaterType(OwnerAccountEnum.RunningWaterStatus.TAKE_OUT.getCode());
runningWaterRecord.setRunningWaterNo(idGenerateSnowFlake.nextId(IdTypeEnum.Type.TAKE_OUT.getCode()));
ownerRunningWaterRecordDao.saveEntity(runningWaterRecord);
//TODO networkDriverRunningWaterRecordService
} else { } else {
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO); settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
settlementDriverDetail.setPrepayFreightFlag(0); settlementDriverDetail.setPrepayFreightFlag(0);
...@@ -211,6 +185,50 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -211,6 +185,50 @@ public class SettlementServiceImpl implements SettlementService {
} }
private void generateTakeOutRunningWatter(OrderChild orderChild, BigDecimal ans, SettlementOwnerDetail settlementOwnerDetail, SettlementDriverDetail settlementDriverDetail) {
OwnerAccount account = null;
while (true) {
account = ownerAccountDao.getAccountByOwnerUserNoAndAccountType(orderChild.getOwnerUserNo(),
OwnerAccountEnum.AccountTypeStatus.PREPAID_FREIGHT_ACCOUNT.getCode());
OwnerAccount update = new OwnerAccount();
update.setId(account.getId());
update.setAccountBalance(ans);
update.setModifiedTime(account.getModifiedTime());
update.setFrozenBalance(ans);
Integer i = ownerAccountDao.updateOwnerAccountForConfirm(update);
if (null != i && i > 0) {
break;
}
}
account = ownerAccountDao.getAccountByOwnerUserNoAndAccountType(orderChild.getOwnerUserNo(),
OwnerAccountEnum.AccountTypeStatus.PREPAID_FREIGHT_ACCOUNT.getCode());
settlementOwnerDetail.setPrepayFreight(ans);
settlementDriverDetail.setPrepayFreightFlag(1);
settlementOwnerDetail.setFinalPaymentStatus(SettlementOwnerDetailEnum.FinalPaymentStatus.NO_REQUIRE.getCode());
OwnerRunningWaterRecord runningWaterRecord = new OwnerRunningWaterRecord();
runningWaterRecord.setOwnerUserName(orderChild.getOwnerName());
runningWaterRecord.setMobile(orderChild.getDriverMobile());
runningWaterRecord.setCreateBy("系统");
runningWaterRecord.setOrderNo(orderChild.getOrderNo());
runningWaterRecord.setOrderChildId(orderChild.getId());
runningWaterRecord.setOrderChildNo(orderChild.getChildNo());
runningWaterRecord.setRelationId(null);
runningWaterRecord.setAlterationBalance(ans);
runningWaterRecord.setFrozenBalance(account.getFrozenBalance());
runningWaterRecord.setUsableBalance(account.getUsableBalance());
runningWaterRecord.setTakeOutBalance(ans);
runningWaterRecord.setAccountBalance(account.getAccountBalance());
runningWaterRecord.setOwnerUserNo(account.getOwnerUserNo());
runningWaterRecord.setAccountType(OwnerAccountEnum.AccountTypeStatus.PREPAID_FREIGHT_ACCOUNT.getCode());
runningWaterRecord.setRunningWaterType(OwnerAccountEnum.RunningWaterStatus.TAKE_OUT.getCode());
runningWaterRecord.setRunningWaterNo(idGenerateSnowFlake.nextId(IdTypeEnum.Type.TAKE_OUT.getCode()));
ownerRunningWaterRecordDao.saveEntity(runningWaterRecord);
}
/** /**
* 预付运费支付 * 预付运费支付
*/ */
......
...@@ -2,6 +2,7 @@ package com.clx.performance.service.settle; ...@@ -2,6 +2,7 @@ package com.clx.performance.service.settle;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.model.settle.NetworkDriverAccount; import com.clx.performance.model.settle.NetworkDriverAccount;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.param.app.NetworkDriverPageParam; import com.clx.performance.param.app.NetworkDriverPageParam;
import com.clx.performance.param.pc.PageNetworkAccountInfoListParam; import com.clx.performance.param.pc.PageNetworkAccountInfoListParam;
import com.clx.performance.vo.app.APPNetworkDriverRunningWaterRecordVO; import com.clx.performance.vo.app.APPNetworkDriverRunningWaterRecordVO;
...@@ -18,15 +19,17 @@ public interface NetworkDriverRunningWaterRecordService { ...@@ -18,15 +19,17 @@ public interface NetworkDriverRunningWaterRecordService {
IPage<NetworkDriverRunningWaterRecordVO> networkDriverRunningWaterRecordList(PageNetworkAccountInfoListParam param); IPage<NetworkDriverRunningWaterRecordVO> networkDriverRunningWaterRecordList(PageNetworkAccountInfoListParam param);
void generateSettlementRunningWaterRecord(NetworkDriverAccount networkDriverAccount, BigDecimal money); void generateSettlementRunningWaterRecord(Long userNo, BigDecimal money);
void generateCaseOutFrozenRunningWaterRecord(NetworkDriverAccount networkDriverAccount, BigDecimal money); void generateCaseOutFrozenRunningWaterRecord(Long userNo, BigDecimal money);
void generateCaseOutSuccessRunningWaterRecord(NetworkDriverAccount networkDriverAccount, BigDecimal money); void generateCaseOutSuccessRunningWaterRecord(Long userNo, BigDecimal money);
void generateNetworkDriverRunningWaterRecord(NetworkDriverAccount networkDriverAccount, BigDecimal money, Integer runningWaterType); void generateNetworkDriverRunningWaterRecord(Long userNo, BigDecimal money, Integer runningWaterType);
IPage<APPNetworkDriverRunningWaterRecordVO> pageFrozenList(NetworkDriverPageParam param); IPage<APPNetworkDriverRunningWaterRecordVO> pageFrozenList(NetworkDriverPageParam param);
IPage<APPNetworkDriverRunningWaterRecordVO> runningWaterList(NetworkDriverPageParam param); IPage<APPNetworkDriverRunningWaterRecordVO> runningWaterList(NetworkDriverPageParam param);
void generateNetworkCaseOutRecord(SettlementDriverDetail settlementDriverDetail);
} }
...@@ -10,9 +10,9 @@ public class NetworkCaseOutRecordProvider { ...@@ -10,9 +10,9 @@ public class NetworkCaseOutRecordProvider {
public String networkCaseOutRecord(@Param("param") PageNetworkCaseOutRecordListParam param) { public String networkCaseOutRecord(@Param("param") PageNetworkCaseOutRecordListParam param) {
String sql = new SQL() {{ String sql = new SQL() {{
SELECT("a.id,a.case_out_no,a.driver_user_no," + SELECT("a.id,a.case_out_no,a.driver_user_no," +
" a.driver_user_name,a.payee,a.bank,a.collection_bank_code,a.status,a.platform,a.relation_id,a.order_id,a.order_no,a.order_child_id," + " a.driver_user_name,a.payee,a.bank,a.collection_bank_code,a.status,a.status_msg,a.platform,a.order_no,a.order_goods_no," +
"a.order_child_no,a.mobile,a.alteration_balance,a.account_balance, " + "a.child_no,a.mobile,a.alteration_balance, " +
" a.usable_balance,a.frozen_balance,a.take_out_balance,a.create_by," + "a.create_by," +
"date_format(a.finish_time, '%Y-%m-%d %H:%i:%s') as finish_time,date_format(a.create_time, '%Y-%m-%d %H:%i:%s') as create_time"); "date_format(a.finish_time, '%Y-%m-%d %H:%i:%s') as finish_time,date_format(a.create_time, '%Y-%m-%d %H:%i:%s') as create_time");
FROM("network_case_out_record a"); FROM("network_case_out_record a");
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论