parent
fa36cd135f
commit
7ca93edc5a
|
|
@ -12,6 +12,7 @@ import com.czg.order.vo.OrderInfoVo;
|
|||
import com.czg.resp.CzgResult;
|
||||
import com.czg.sa.StpKit;
|
||||
import com.czg.service.order.service.PayService;
|
||||
import com.czg.utils.AssertUtil;
|
||||
import com.czg.utils.ServletUtil;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import jakarta.annotation.Resource;
|
||||
|
|
@ -100,4 +101,17 @@ public class AdminOrderController {
|
|||
public CzgResult<Boolean> printOrder(@Validated @RequestBody OrderInfoPrintDTO orderInfoPrintDTO) {
|
||||
return CzgResult.success(orderInfoService.printOrder(StpKit.USER.getShopId(), orderInfoPrintDTO));
|
||||
}
|
||||
|
||||
@PostMapping("/cancelOrder")
|
||||
public CzgResult<Void> cancelOrder(@Validated @RequestBody OrderCannelDTO param) {
|
||||
orderInfoService.cancelledOrder(param.getShopId(), param.getOrderId());
|
||||
return CzgResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("/rmPlaceOrder")
|
||||
public CzgResult<Void> cancelledPlaceOrder(@Validated @RequestBody OrderCannelDTO param) {
|
||||
AssertUtil.isNull(param.getPlaceNum(), "{}不能为空", "取消单次");
|
||||
orderInfoService.cancelledPlaceOrder(param.getShopId(), param.getOrderId(), param.getPlaceNum());
|
||||
return CzgResult.success();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
package com.czg.controller.user;
|
||||
|
||||
import com.czg.annotation.Debounce;
|
||||
import com.czg.exception.CzgException;
|
||||
import com.czg.order.dto.OrderCannelDTO;
|
||||
import com.czg.order.dto.OrderInfoAddDTO;
|
||||
import com.czg.order.dto.OrderInfoQueryDTO;
|
||||
import com.czg.order.entity.OrderInfo;
|
||||
|
|
@ -9,11 +11,13 @@ import com.czg.order.vo.HistoryOrderVo;
|
|||
import com.czg.order.vo.OrderInfoVo;
|
||||
import com.czg.resp.CzgResult;
|
||||
import com.czg.sa.StpKit;
|
||||
import com.czg.service.order.enums.OrderStatusEnums;
|
||||
import com.czg.utils.AssertUtil;
|
||||
import com.czg.utils.ServletUtil;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
|
||||
|
|
@ -70,10 +74,30 @@ public class UserOrderController {
|
|||
public CzgResult<Void> upOrderIsDel(@PathVariable("id") Long id) {
|
||||
//效验数据
|
||||
AssertUtil.isNull(id, "{}不能为空", "订单Id");
|
||||
OrderInfo orderInfo = orderInfoService.getById(id);
|
||||
AssertUtil.isNull(orderInfo, "删除失败订单不存在");
|
||||
if (orderInfo.getStatus().equals(OrderStatusEnums.UNPAID.getCode())) {
|
||||
throw new CzgException("待支付订单不可删除");
|
||||
}
|
||||
orderInfoService.updateChain()
|
||||
.set(OrderInfo::getIsDel, 1)
|
||||
.eq(OrderInfo::getId, id)
|
||||
.update();
|
||||
return CzgResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("/cancelOrder")
|
||||
@Debounce(value = "#param.orderId")
|
||||
public CzgResult<Void> cancelOrder(@Validated @RequestBody OrderCannelDTO param) {
|
||||
orderInfoService.cancelledOrder(param.getShopId(), param.getOrderId());
|
||||
return CzgResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("/rmPlaceOrder")
|
||||
@Debounce(value = "#param.orderId")
|
||||
public CzgResult<Void> cancelledPlaceOrder(@Validated @RequestBody OrderCannelDTO param) {
|
||||
AssertUtil.isNull(param.getPlaceNum(), "{}不能为空", "取消单次");
|
||||
orderInfoService.cancelledPlaceOrder(param.getShopId(), param.getOrderId(), param.getPlaceNum());
|
||||
return CzgResult.success();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
package com.czg.order.dto;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author ww
|
||||
* @description
|
||||
*/
|
||||
@Data
|
||||
public class OrderCannelDTO {
|
||||
@NotNull(message = "店铺ID不可为空")
|
||||
private Long shopId;
|
||||
@NotNull(message = "订单ID不可为空")
|
||||
private Long orderId;
|
||||
private Integer placeNum;
|
||||
}
|
||||
|
|
@ -60,4 +60,8 @@ public interface OrderInfoService extends IService<OrderInfo> {
|
|||
|
||||
|
||||
Boolean removeOrderDetail(Long shopId, Long orderId, Long detailId);
|
||||
|
||||
Boolean cancelledOrder(Long shopId, Long orderId);
|
||||
|
||||
Boolean cancelledPlaceOrder(Long shopId, Long orderId, Integer placeNum);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,4 +15,5 @@ import java.util.Map;
|
|||
@Data
|
||||
public class HistoryOrderPrintVo extends OrderInfo {
|
||||
private Map<String, List<OrderDetailPrintVo>> detailMap;
|
||||
private long orderNum;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import com.czg.account.entity.ShopInfo;
|
|||
import com.czg.account.service.ShopInfoService;
|
||||
import com.czg.order.entity.OrderDetail;
|
||||
import com.czg.order.entity.OrderInfo;
|
||||
import com.czg.service.order.enums.OrderStatusEnums;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.codec.digest.DigestUtils;
|
||||
|
|
@ -110,6 +111,9 @@ public class FeiPrinter extends PrinterHandler implements PrinterImpl {
|
|||
@Override
|
||||
protected void normalOrderPrint(OrderInfo orderInfo, boolean isPre, PrintMachine machine, String balance, List<OrderDetail> detailList) {
|
||||
ShopInfo shopInfo = shopInfoService.getById(orderInfo.getShopId());
|
||||
long count = orderInfoService.queryChain()
|
||||
.eq(OrderInfo::getTradeDay, orderInfo.getTradeDay())
|
||||
.eq(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode()).count();
|
||||
String printerNum = "1";
|
||||
if (StrUtil.isNotBlank(machine.getPrintQty())) {
|
||||
printerNum = machine.getPrintQty().split("\\^")[1];
|
||||
|
|
@ -122,6 +126,8 @@ public class FeiPrinter extends PrinterHandler implements PrinterImpl {
|
|||
.setBalance(balance).setPayType((ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType())).setIntegral("0")
|
||||
.setOutNumber(orderInfo.getTakeCode()).setPrintTitle(isPre ? "预结算单" : "结算单")
|
||||
.setRemark(orderInfo.getRemark()).setDiscountAmount(orderInfo.getOriginAmount().subtract(orderInfo.getPayAmount()).toPlainString());
|
||||
printInfoDTO.setPrintTitle(printInfoDTO.getPrintTitle() + " #" + count);
|
||||
|
||||
String string = buildOrderPrintData(printInfoDTO, detailList);
|
||||
Object resp = sendPrintRequest(machine.getAddress(), string, null, printerNum);
|
||||
printMachineLogService.save(machine, "结算单", string, resp);
|
||||
|
|
|
|||
|
|
@ -125,6 +125,7 @@ public abstract class PrinterHandler {
|
|||
private String outNumber;
|
||||
private String discountAmount;
|
||||
private String discountRadio;
|
||||
private String orderNum;
|
||||
// 是否退款单
|
||||
private boolean isReturn;
|
||||
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import com.czg.account.entity.ShopInfo;
|
|||
import com.czg.account.service.ShopInfoService;
|
||||
import com.czg.order.entity.OrderDetail;
|
||||
import com.czg.order.entity.OrderInfo;
|
||||
import com.czg.service.order.enums.OrderStatusEnums;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.http.HttpEntity;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
|
|
@ -156,13 +157,16 @@ public class YxyPrinter extends PrinterHandler implements PrinterImpl {
|
|||
@Override
|
||||
protected void normalOrderPrint(OrderInfo orderInfo, boolean isPre, PrintMachine machine, String balance, List<OrderDetail> detailList) {
|
||||
ShopInfo shopInfo = shopInfoService.getById(orderInfo.getShopId());
|
||||
long count = orderInfoService.queryChain()
|
||||
.eq(OrderInfo::getTradeDay, orderInfo.getTradeDay())
|
||||
.eq(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode()).count();
|
||||
PrintInfoDTO printInfoDTO = new PrintInfoDTO().setShopName(shopInfo.getShopName()).setPrintType("普通打印").setPickupNum(getPickupNum(orderInfo))
|
||||
.setOrderNo(orderInfo.getOrderNo()).setTradeDate(DateUtil.format(orderInfo.getCreateTime(), "yyyy-MM-dd HH:mm:ss")).setOperator("【POS-1】001").setPayAmount(orderInfo.getPayAmount().toPlainString())
|
||||
.setOriginalAmount(orderInfo.getOriginAmount().toPlainString()).setReturn(isReturn(orderInfo))
|
||||
.setBalance(balance).setPayType((ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType())).setIntegral("0")
|
||||
.setOutNumber(orderInfo.getTakeCode()).setPrintTitle(isPre ? "预结算单" : "结算单")
|
||||
.setRemark(orderInfo.getRemark()).setDiscountAmount(orderInfo.getOriginAmount().subtract(orderInfo.getPayAmount()).toPlainString());
|
||||
|
||||
printInfoDTO.setPrintTitle(printInfoDTO.getPrintTitle()+" #"+count);
|
||||
String data = buildOrderPrintData(printInfoDTO, detailList);
|
||||
String voiceJson = "{\"PbizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}";
|
||||
// String voiceJson = "{\"bizType\":\"2\",\"content\":\"\"}";
|
||||
|
|
@ -178,7 +182,7 @@ public class YxyPrinter extends PrinterHandler implements PrinterImpl {
|
|||
|
||||
@Override
|
||||
protected void callNumPrint(PrintMachine machine, String callNum, String shopName, String tableName, String tableNote, String preNum, String codeUrl, LocalDateTime takeTime, String shopNote) {
|
||||
String resp = buildCallTicketData(shopName, tableName, callNum, preNum, codeUrl,shopNote, takeTime);
|
||||
String resp = buildCallTicketData(shopName, tableName, callNum, preNum, codeUrl, shopNote, takeTime);
|
||||
sendPrintRequest(machine.getAddress(), resp, null, "1");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -120,6 +120,7 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|||
.eq(OrderInfo::getUserId, param.getUserId())
|
||||
.eq(OrderInfo::getTableCode, CzgStrUtils.getStrOrNull(param.getTableCode()))
|
||||
.eq(OrderInfo::getOrderNo, CzgStrUtils.getStrOrNull(param.getOrderNo()))
|
||||
.eq(OrderInfo::getIsDel, param.getIsDel())
|
||||
.gt(OrderInfo::getCreateTime, CzgStrUtils.getStrOrNull(param.getStartTime()))
|
||||
.le(OrderInfo::getCreateTime, CzgStrUtils.getStrOrNull(param.getEndTime()))
|
||||
.in(OrderInfo::getId, like)
|
||||
|
|
@ -145,6 +146,7 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|||
public CzgResult<HistoryOrderPrintVo> getOrderByIdPrint(Long orderId) {
|
||||
HistoryOrderPrintVo historyOrderVo = getOneAs(new QueryWrapper()
|
||||
.eq(OrderInfo::getId, orderId), HistoryOrderPrintVo.class);
|
||||
AssertUtil.isNull(historyOrderVo, "订单不存在");
|
||||
List<OrderDetailPrintVo> orderDetails = orderDetailService.getOrderDetailPrint(orderId);
|
||||
Map<String, List<OrderDetailPrintVo>> resultMap = new HashMap<>();
|
||||
// 遍历订单详情列表
|
||||
|
|
@ -159,6 +161,10 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|||
resultMap.computeIfAbsent(placeNum.toString(), k -> new ArrayList<>()).add(orderDetail);
|
||||
}
|
||||
historyOrderVo.setDetailMap(resultMap);
|
||||
long count = queryChain()
|
||||
.eq(OrderInfo::getTradeDay, historyOrderVo.getTradeDay())
|
||||
.eq(OrderInfo::getStatus,OrderStatusEnums.DONE.getCode()).count();
|
||||
historyOrderVo.setOrderNum(count);
|
||||
return CzgResult.success(historyOrderVo);
|
||||
}
|
||||
|
||||
|
|
@ -840,7 +846,7 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|||
orderInfo.setOriginAmount(param.getOriginAmount());
|
||||
if (param.getOrderAmount() != null && param.getOrderAmount().compareTo(BigDecimal.ZERO) >= 0) {
|
||||
orderInfo.setOrderAmount(param.getOrderAmount());
|
||||
}else {
|
||||
} else {
|
||||
orderInfo.setOrderAmount(BigDecimal.ZERO);
|
||||
}
|
||||
orderInfo.setPackFee(orderInfo.getPackFee().add(param.getPackFee()));
|
||||
|
|
@ -985,4 +991,85 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|||
}
|
||||
throw new ApiNotPrintException("操作失败");
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean cancelledOrder(Long shopId, Long orderId) {
|
||||
OrderInfo orderInfo = getById(orderId);
|
||||
if (orderInfo == null) {
|
||||
throw new ApiNotPrintException("订单不存在");
|
||||
}
|
||||
if (!OrderStatusEnums.UNPAID.getCode().equals(orderInfo.getStatus())) {
|
||||
throw new ApiNotPrintException("订单不可取消");
|
||||
}
|
||||
updateChain()
|
||||
.set(OrderInfo::getStatus, OrderStatusEnums.CANCELLED.getCode())
|
||||
.eq(OrderInfo::getShopId, shopId)
|
||||
.eq(OrderInfo::getId, orderId)
|
||||
.update();
|
||||
redisService.del(RedisCst.classKeyExpired.EXPIRED_ORDER + orderInfo.getId());
|
||||
throw new ApiNotPrintException("操作失败");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean cancelledPlaceOrder(Long shopId, Long orderId, Integer placeNum) {
|
||||
OrderInfo orderInfo = getById(orderId);
|
||||
if (orderInfo == null) {
|
||||
throw new ApiNotPrintException("订单不存在");
|
||||
}
|
||||
if (!OrderStatusEnums.UNPAID.getCode().equals(orderInfo.getStatus())) {
|
||||
throw new ApiNotPrintException("订单不可取消");
|
||||
}
|
||||
if (orderInfo.getPlaceNum().equals(1)) {
|
||||
updateChain()
|
||||
.set(OrderInfo::getStatus, OrderStatusEnums.CANCELLED.getCode())
|
||||
.eq(OrderInfo::getShopId, shopId)
|
||||
.eq(OrderInfo::getId, orderId);
|
||||
return true;
|
||||
}
|
||||
orderDetailService.remove(new QueryWrapper().eq(OrderDetail::getOrderId, orderId).eq(OrderDetail::getPlaceNum, placeNum));
|
||||
List<OrderDetail> list = orderDetailService.queryChain().eq(OrderDetail::getOrderId, orderId).eq(OrderDetail::getShopId, shopId).list();
|
||||
if (CollUtil.isEmpty(list)) {
|
||||
updateChain()
|
||||
.set(OrderInfo::getStatus, OrderStatusEnums.CANCELLED.getCode())
|
||||
.set(OrderInfo::getOriginAmount, BigDecimal.ZERO)
|
||||
.eq(OrderInfo::getShopId, shopId)
|
||||
.eq(OrderInfo::getId, orderId);
|
||||
return true;
|
||||
} else {
|
||||
BigDecimal totalAmount = BigDecimal.ZERO;
|
||||
for (OrderDetail orderDetail : list) {
|
||||
BigDecimal subtract = orderDetail.getNum().subtract(orderDetail.getReturnNum());
|
||||
if (subtract.compareTo(BigDecimal.ZERO) > 0) {
|
||||
BigDecimal unitPrice;
|
||||
if (orderDetail.getDiscountSaleAmount().compareTo(BigDecimal.ZERO) > 0) {
|
||||
unitPrice = orderDetail.getDiscountSaleAmount();
|
||||
} else {
|
||||
unitPrice = orderDetail.getPrice();
|
||||
}
|
||||
totalAmount = totalAmount.add((orderDetail.getNum().subtract(orderDetail.getReturnNum())))
|
||||
.multiply(unitPrice);
|
||||
}
|
||||
if (subtract.compareTo(BigDecimal.ZERO) > 0
|
||||
&& orderDetail.getPackAmount().compareTo(BigDecimal.ZERO) > 0
|
||||
&& orderDetail.getPackNumber().compareTo(BigDecimal.ZERO) > 0) {
|
||||
totalAmount = totalAmount.add(orderDetail.getPackAmount().multiply(orderDetail.getPackNumber()));
|
||||
}
|
||||
if (orderDetail.getPlaceNum() > placeNum) {
|
||||
orderDetailService.updateChain()
|
||||
.eq(OrderDetail::getId, orderDetail.getId())
|
||||
.set(OrderDetail::getPlaceNum, orderDetail.getPlaceNum() - 1)
|
||||
.update();
|
||||
}
|
||||
}
|
||||
updateChain().eq(OrderInfo::getId, orderId)
|
||||
.eq(OrderInfo::getShopId, shopId)
|
||||
.set(OrderInfo::getOriginAmount, totalAmount)
|
||||
.set(OrderInfo::getPlaceNum, orderInfo.getPlaceNum() - 1)
|
||||
.update();
|
||||
}
|
||||
throw new ApiNotPrintException("操作失败");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue