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 orderDetls = orderDetlService.list(new LambdaQueryWrapper().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; } }