子订单增加分账/提现状态
This commit is contained in:
parent
bbfc76472b
commit
a5f274652f
|
|
@ -77,4 +77,17 @@ public class OrderDetail extends BaseEntity {
|
||||||
private Integer shelveStatus;
|
private Integer shelveStatus;
|
||||||
|
|
||||||
private Integer ledgerAccountStatus;
|
private Integer ledgerAccountStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* draw_cash_status
|
||||||
|
* 0 未分账
|
||||||
|
* 1 已分账
|
||||||
|
* 2 已到账
|
||||||
|
*/
|
||||||
|
private Integer drawCashStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发起提现时间 draw_cash_date
|
||||||
|
*/
|
||||||
|
private Date drawCashDate;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -44,10 +44,7 @@ import java.math.RoundingMode;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.time.format.DateTimeFormatterBuilder;
|
import java.time.format.DateTimeFormatterBuilder;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.concurrent.atomic.AtomicLong;
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
@ -359,13 +356,18 @@ public class OrderDetailServiceImpl implements OrderDetailService {
|
||||||
// 找到 type=平台抽成 的子财务单 用来承担手续费
|
// 找到 type=平台抽成 的子财务单 用来承担手续费
|
||||||
List<FinancialDetail> details = financialDetailService.selectByFinancialMasterIdAndType(financialMasterId, FinancialDetailType.PLATFORM_FEE.getCode());
|
List<FinancialDetail> details = financialDetailService.selectByFinancialMasterIdAndType(financialMasterId, FinancialDetailType.PLATFORM_FEE.getCode());
|
||||||
FinancialDetail platformFeeFD = details.get(0);
|
FinancialDetail platformFeeFD = details.get(0);
|
||||||
FinancialDetail update = new FinancialDetail();
|
FinancialDetail fdUpdate = new FinancialDetail();
|
||||||
update.setId(platformFeeFD.getId());
|
fdUpdate.setId(platformFeeFD.getId());
|
||||||
update.setPayMoney(platformFeeFD.getPayMoney());
|
fdUpdate.setPayMoney(platformFeeFD.getPayMoney());
|
||||||
logger.debug("子订单[code={}]的完单流程开始", odCode);
|
logger.debug("子订单[code={}]的完单流程开始", odCode);
|
||||||
|
|
||||||
// 更新订单状态
|
// 修改订单状态
|
||||||
orderDetailMapper.updateStatus(orderDetailId, OrderStatus.FINISH.code());
|
OrderDetail odUpdate = new OrderDetail();
|
||||||
|
odUpdate.setId(orderDetailId);
|
||||||
|
odUpdate.setOrderStatus(OrderStatus.FINISH.code());
|
||||||
|
odUpdate.setDrawCashDate(new Date());
|
||||||
|
odUpdate.setDrawCashStatus(1);
|
||||||
|
orderDetailMapper.updateOrderDetail(odUpdate);
|
||||||
|
|
||||||
// 加价单手续费补偿成功与否
|
// 加价单手续费补偿成功与否
|
||||||
boolean compensate = false;
|
boolean compensate = false;
|
||||||
|
|
@ -404,8 +406,8 @@ public class OrderDetailServiceImpl implements OrderDetailService {
|
||||||
if (feeAmt.compareTo(platformFeeFD.getPayMoney()) < 0 && !"0.00".equals(fee_amt)) {
|
if (feeAmt.compareTo(platformFeeFD.getPayMoney()) < 0 && !"0.00".equals(fee_amt)) {
|
||||||
// 当 0.00<改价单的手续费<=平台抽成金额 时
|
// 当 0.00<改价单的手续费<=平台抽成金额 时
|
||||||
// 用平台抽成来补偿改价单的手续费 修改平台抽成子财务单金额
|
// 用平台抽成来补偿改价单的手续费 修改平台抽成子财务单金额
|
||||||
update.setPayMoney(update.getPayMoney().subtract(feeAmt));
|
fdUpdate.setPayMoney(fdUpdate.getPayMoney().subtract(feeAmt));
|
||||||
int i = financialDetailService.updateFinancialDetail(update);
|
int i = financialDetailService.updateFinancialDetail(fdUpdate);
|
||||||
compensate = i > 0;
|
compensate = i > 0;
|
||||||
} else {
|
} else {
|
||||||
logger.warn("主订单[code={}]的平台抽成金额不足以承担子订单[code={}]的[改价单]的手续费",
|
logger.warn("主订单[code={}]的平台抽成金额不足以承担子订单[code={}]的[改价单]的手续费",
|
||||||
|
|
@ -469,9 +471,10 @@ public class OrderDetailServiceImpl implements OrderDetailService {
|
||||||
Assert.isTrue(status, response.getString("error_msg"));
|
Assert.isTrue(status, response.getString("error_msg"));
|
||||||
// 待提现金额里加入子财务单金额
|
// 待提现金额里加入子财务单金额
|
||||||
dtx = dtx.add(fdPayMoney);
|
dtx = dtx.add(fdPayMoney);
|
||||||
|
|
||||||
// 修改平台抽成子财务单金额
|
// 修改平台抽成子财务单金额
|
||||||
update.setPayMoney(update.getPayMoney().subtract(fee));
|
fdUpdate.setPayMoney(fdUpdate.getPayMoney().subtract(fee));
|
||||||
financialDetailService.updateFinancialDetail(update);
|
financialDetailService.updateFinancialDetail(fdUpdate);
|
||||||
}
|
}
|
||||||
// --------------------- 子财务单分账部分 end ---------------------
|
// --------------------- 子财务单分账部分 end ---------------------
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,27 +5,29 @@
|
||||||
<mapper namespace="com.ghy.order.mapper.OrderDetailMapper">
|
<mapper namespace="com.ghy.order.mapper.OrderDetailMapper">
|
||||||
|
|
||||||
<resultMap id="OrderDetailResult" type="com.ghy.order.domain.OrderDetail">
|
<resultMap id="OrderDetailResult" type="com.ghy.order.domain.OrderDetail">
|
||||||
<id property="id" column="id"/>
|
<id property="id" column="id"/>
|
||||||
<result property="code" column="code"/>
|
<result property="code" column="code"/>
|
||||||
<result property="orderMasterId" column="order_master_id"/>
|
<result property="orderMasterId" column="order_master_id"/>
|
||||||
<result property="orderMasterCode" column="order_master_code"/>
|
<result property="orderMasterCode" column="order_master_code"/>
|
||||||
<result property="customerId" column="customer_id"/>
|
<result property="customerId" column="customer_id"/>
|
||||||
<result property="orderType" column="order_type"/>
|
<result property="orderType" column="order_type"/>
|
||||||
<result property="orderStatus" column="order_status"/>
|
<result property="orderStatus" column="order_status"/>
|
||||||
<result property="workerId" column="worker_id"/>
|
<result property="workerId" column="worker_id"/>
|
||||||
<result property="revTime" column="rev_time"/>
|
<result property="revTime" column="rev_time"/>
|
||||||
<result property="expectTimeStart" column="expect_time_start"/>
|
<result property="expectTimeStart" column="expect_time_start"/>
|
||||||
<result property="expectTimeEnd" column="expect_time_end"/>
|
<result property="expectTimeEnd" column="expect_time_end"/>
|
||||||
<result property="workBeginTime" column="work_begin_time"/>
|
<result property="workBeginTime" column="work_begin_time"/>
|
||||||
<result property="workFinishTime" column="work_finish_time"/>
|
<result property="workFinishTime" column="work_finish_time"/>
|
||||||
<result property="clockInLocation" column="clock_in_location"/>
|
<result property="drawCashDate" column="draw_cash_date"/>
|
||||||
<result property="shelveStatus" column="shelve_status"/>
|
<result property="drawCashStatus" column="draw_cash_status"/>
|
||||||
<result property="ledgerAccountStatus" column="ledger_account_status"/>
|
<result property="clockInLocation" column="clock_in_location"/>
|
||||||
<result property="createBy" column="create_by"/>
|
<result property="shelveStatus" column="shelve_status"/>
|
||||||
<result property="createTime" column="create_time"/>
|
<result property="ledgerAccountStatus" column="ledger_account_status"/>
|
||||||
<result property="updateBy" column="update_by"/>
|
<result property="createBy" column="create_by"/>
|
||||||
<result property="updateTime" column="update_time"/>
|
<result property="createTime" column="create_time"/>
|
||||||
<result property="remark" column="remark"/>
|
<result property="updateBy" column="update_by"/>
|
||||||
|
<result property="updateTime" column="update_time"/>
|
||||||
|
<result property="remark" column="remark"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="selectOrderDetail">
|
<sql id="selectOrderDetail">
|
||||||
|
|
@ -42,6 +44,8 @@
|
||||||
expect_time_end,
|
expect_time_end,
|
||||||
work_begin_time,
|
work_begin_time,
|
||||||
work_finish_time,
|
work_finish_time,
|
||||||
|
draw_cash_date,
|
||||||
|
draw_cash_status,
|
||||||
clock_in_location,
|
clock_in_location,
|
||||||
ledger_account_status,
|
ledger_account_status,
|
||||||
shelve_status,
|
shelve_status,
|
||||||
|
|
@ -66,6 +70,8 @@
|
||||||
od.expect_time_end,
|
od.expect_time_end,
|
||||||
od.work_begin_time,
|
od.work_begin_time,
|
||||||
od.work_finish_time,
|
od.work_finish_time,
|
||||||
|
od.draw_cash_date,
|
||||||
|
od.draw_cash_status,
|
||||||
od.clock_in_location,
|
od.clock_in_location,
|
||||||
od.ledger_account_status,
|
od.ledger_account_status,
|
||||||
od.shelve_status,
|
od.shelve_status,
|
||||||
|
|
@ -124,6 +130,9 @@
|
||||||
<if test="shelveStatus == null">
|
<if test="shelveStatus == null">
|
||||||
AND od.shelve_status = 0
|
AND od.shelve_status = 0
|
||||||
</if>
|
</if>
|
||||||
|
<if test="drawCashStatus != null">
|
||||||
|
AND od.draw_cash_status = ${drawCashStatus}
|
||||||
|
</if>
|
||||||
</where>
|
</where>
|
||||||
order by od.create_time
|
order by od.create_time
|
||||||
<trim suffixOverrides=",">
|
<trim suffixOverrides=",">
|
||||||
|
|
@ -223,6 +232,8 @@
|
||||||
<if test="useTimeNotRange">expect_time_end = null,</if>
|
<if test="useTimeNotRange">expect_time_end = null,</if>
|
||||||
<if test="workBeginTime != null">work_begin_time = #{workBeginTime},</if>
|
<if test="workBeginTime != null">work_begin_time = #{workBeginTime},</if>
|
||||||
<if test="workFinishTime != null">work_finish_time = #{workFinishTime},</if>
|
<if test="workFinishTime != null">work_finish_time = #{workFinishTime},</if>
|
||||||
|
<if test="drawCashDate != null">draw_cash_date = #{drawCashDate},</if>
|
||||||
|
<if test="drawCashStatus != null">draw_cash_status = #{drawCashStatus},</if>
|
||||||
<if test="clockInLocation != null and clockInLocation != ''">clock_in_location = #{clockInLocation},</if>
|
<if test="clockInLocation != null and clockInLocation != ''">clock_in_location = #{clockInLocation},</if>
|
||||||
<if test="remark != null">remark = #{remark},</if>
|
<if test="remark != null">remark = #{remark},</if>
|
||||||
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
|
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
|
||||||
|
|
|
||||||
|
|
@ -8,4 +8,7 @@ public interface OrderService {
|
||||||
// 自动完成和分账
|
// 自动完成和分账
|
||||||
void autoFinishOrder();
|
void autoFinishOrder();
|
||||||
|
|
||||||
|
// 自动修改提现状态
|
||||||
|
void autoChangeDrawCashStatus();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,8 @@ import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.time.DayOfWeek;
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -177,4 +179,27 @@ public class OrderServiceImpl implements OrderService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void autoChangeDrawCashStatus() {
|
||||||
|
LocalDate now = LocalDate.now();
|
||||||
|
DayOfWeek dayOfWeek = now.getDayOfWeek();
|
||||||
|
if (dayOfWeek.getValue() > 5) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
OrderDetail orderDetail = new OrderDetail();
|
||||||
|
orderDetail.setDrawCashStatus(1);
|
||||||
|
List<OrderDetail> orderDetails = orderDetailService.selectOrderDetailList(orderDetail);
|
||||||
|
long before24h = System.currentTimeMillis() - (24 * 60 * 60 * 1000);
|
||||||
|
for (OrderDetail od : orderDetails) {
|
||||||
|
if (od.getDrawCashDate().getTime() < before24h) {
|
||||||
|
OrderDetail update = new OrderDetail();
|
||||||
|
update.setId(od.getId());
|
||||||
|
update.setOrderStatus(2);
|
||||||
|
orderDetailService.updateOrderDetail(update);
|
||||||
|
logger.info("订单[{}]自动提现成功", od.getCode());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,25 +15,34 @@ public class OrderTask {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 超时状态刷新
|
* 超时状态刷新
|
||||||
* */
|
*/
|
||||||
public void overTimeOrder(String orderStatus){
|
public void overTimeOrder(String orderStatus) {
|
||||||
try {
|
try {
|
||||||
orderService.overTimeOrder(orderStatus);
|
orderService.overTimeOrder(orderStatus);
|
||||||
}catch (Exception e){
|
} catch (Exception e) {
|
||||||
log.error("over time order task error is {}", ExceptionUtil.getExceptionMessage(e));
|
log.error("over time order task error is {}", ExceptionUtil.getExceptionMessage(e));
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 自动确认完成订单
|
* 自动确认完成订单
|
||||||
* */
|
*/
|
||||||
public void finishOrder(){
|
public void finishOrder() {
|
||||||
try {
|
try {
|
||||||
orderService.autoFinishOrder();
|
orderService.autoFinishOrder();
|
||||||
}catch (Exception e){
|
} catch (Exception e) {
|
||||||
log.error("auto finish order task error is {}", ExceptionUtil.getExceptionMessage(e));
|
log.error("auto finish order task error is {}", ExceptionUtil.getExceptionMessage(e));
|
||||||
e.printStackTrace();
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自动修改提现状态
|
||||||
|
*/
|
||||||
|
public void autoChangeDrawCashStatus() {
|
||||||
|
try {
|
||||||
|
orderService.autoChangeDrawCashStatus();
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error(e.getMessage(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue