package com.zy.asrs.wms.utils;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.zy.asrs.framework.exception.CoolException;
|
import com.zy.asrs.wms.asrs.entity.Order;
|
import com.zy.asrs.wms.asrs.entity.OrderDetl;
|
import com.zy.asrs.wms.asrs.entity.enums.OrderSettleType;
|
import com.zy.asrs.wms.asrs.service.OrderDetlService;
|
import com.zy.asrs.wms.asrs.service.OrderService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.Date;
|
import java.util.List;
|
|
@Component
|
public class OrderUtils {
|
|
@Autowired
|
private OrderService orderService;
|
@Autowired
|
private OrderDetlService orderDetlService;
|
|
@Transactional
|
public void updateWorkQty(Long orderDetlId, Double qty) {
|
updateWorkQty(orderDetlId, qty, true);
|
}
|
|
@Transactional
|
public void updateWorkQty(Long orderDetlId, Double qty, boolean increase) {
|
OrderDetl orderDetl = orderDetlService.getById(orderDetlId);
|
if (orderDetl == null) {
|
throw new CoolException("订单明细不存在");
|
}
|
|
Order order = orderService.getById(orderDetl.getOrderId());
|
if (order == null) {
|
throw new CoolException("订单不存在");
|
}
|
|
if (order.getOrderSettle() == OrderSettleType.COMPLETE.val()
|
|| order.getOrderSettle() == OrderSettleType.CANCEL.val()
|
|| order.getOrderSettle() == OrderSettleType.WAIT_CANCEL.val()
|
|| order.getOrderSettle() == OrderSettleType.REPORT_COMPLETE.val()) {
|
throw new CoolException("订单当前状态不可修改");
|
}
|
|
Double workQty = orderDetl.getWorkQty();
|
if (increase) {
|
orderDetl.setWorkQty(workQty + qty);
|
}else {
|
orderDetl.setWorkQty(workQty - qty);
|
}
|
orderDetl.setUpdateTime(new Date());
|
if (!orderDetlService.updateById(orderDetl)) {
|
throw new CoolException("订单明细更新失败");
|
}
|
|
List<OrderDetl> orderDetls = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderId, order.getId()));
|
boolean flag = false;
|
for (OrderDetl detl : orderDetls) {
|
if ((detl.getQty() + detl.getWorkQty()) > 0) {
|
flag = true;
|
break;
|
}
|
}
|
|
if (flag) {
|
order.setOrderSettle(OrderSettleType.WORKING.val());
|
} else {
|
order.setOrderSettle(OrderSettleType.WAIT.val());
|
}
|
order.setUpdateTime(new Date());
|
if (!orderService.updateById(order)) {
|
throw new CoolException("订单更新失败");
|
}
|
}
|
|
public Integer getIoPri() {
|
return 11;
|
}
|
|
}
|