Compare commits

14 Commits

Author SHA1 Message Date
cb869ea18f 转单后原价为空 2026-03-30 15:37:54 +08:00
ccb4973080 餐位费 显示单价 2026-03-30 15:03:22 +08:00
5a18941a99 打包费 2026-03-30 14:35:57 +08:00
1cebd38da4 打包费 2026-03-30 14:15:48 +08:00
bb414d2776 打包费 2026-03-30 14:09:36 +08:00
f7b30a5142 结算单金额 2026-03-30 11:44:52 +08:00
883284c22b 与结算单 2026-03-30 11:02:58 +08:00
66d61dbd5a 台桌 金额2 2026-03-30 10:55:10 +08:00
3b6137c5d2 台桌 金额 2026-03-30 10:50:45 +08:00
578b829064 预结算单 位数3 2026-03-30 10:33:46 +08:00
4665f47665 预结算单 位数 2026-03-30 10:24:51 +08:00
30f8f62e73 预结算单 位数 2026-03-30 10:17:01 +08:00
8c559b1c0c 预结算单 原价
打印单上的二维码
2026-03-30 10:07:34 +08:00
gong
7d619b8260 in sql 异常 2026-03-30 09:58:38 +08:00
6 changed files with 40 additions and 27 deletions

View File

@@ -10,7 +10,7 @@
MAX(b.id) as orderId,
MAX(b.user_id) as user_id,
-- 核心:真实金额 = 支付总额 - 退款总额
IFNULL(SUM(d.pay_amount), 0) - IFNULL(SUM(d.return_amount), 0) as orderAmount,
IFNULL(SUM( (d.num - d.return_num) * d.unit_price - d.return_amount ), 0) as orderAmount,
MAX(b.seat_num) as personNum,
MAX(b.create_time) as orderCreateTime,
MAX(ar.name) as areaName

View File

@@ -18,7 +18,6 @@ import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* 打印机具体打印方法接口,提供打印元数据获取,具体打印机实现对应方法即可
@@ -353,11 +352,11 @@ public interface PrinterImpl {
.append(signLabelInfo.br);
// data.append(StrUtil.format("<L><BOLD>备注:{}</BOLD></L><BR>", printInfoDTO.getRemark()));
}
if (Objects.nonNull(printInfoDTO.getOutNumber())) {
data.append(getFormatLabel(printInfoDTO.getOutNumber(), signLabelInfo.center, signLabelInfo.qr))
.append(signLabelInfo.br);
// data.append("<QR>".concat(printInfoDTO.getOutNumber()).concat("</QR><BR>"));
}
// if (Objects.nonNull(printInfoDTO.getOutNumber())) {
// data.append(getFormatLabel(printInfoDTO.getOutNumber(), signLabelInfo.center, signLabelInfo.qr))
// .append(signLabelInfo.br);
//// data.append("<QR>".concat(printInfoDTO.getOutNumber()).concat("</QR><BR>"));
// }
data.append(getFormatLabel(StrUtil.format("打印时间:{}", DateUtil.date().toString()), signLabelInfo.s))
.append(signLabelInfo.br)
.append(signLabelInfo.br);
@@ -442,8 +441,8 @@ public interface PrinterImpl {
builder.append(getFormatLabel("【加急】", signLabelInfo.center, signLabelInfo.bold))
.append(signLabelInfo.br);
}
builder.append(getFormatLabel("UP_ORDER_DETAIL:" + orderDetailId, signLabelInfo.center, signLabelInfo.qr))
.append(signLabelInfo.br);
// builder.append(getFormatLabel("UP_ORDER_DETAIL:" + orderDetailId, signLabelInfo.center, signLabelInfo.qr))
// .append(signLabelInfo.br);
builder.append(signLabelInfo.br)
.append(signLabelInfo.getOut(150))
.append(signLabelInfo.cut);
@@ -548,7 +547,7 @@ public interface PrinterImpl {
* @return 添加间距的字符串
*/
default String titleAddSpace(String str, int b1) {
int k = 0;
int k;
try {
k = str.getBytes("GBK").length;
} catch (UnsupportedEncodingException e) {

View File

@@ -5,7 +5,6 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson2.JSONObject;
import com.czg.account.dto.HandoverRecordDTO;
import com.czg.account.entity.PrintMachine;
import com.czg.account.entity.ShopInfo;
@@ -22,6 +21,7 @@ import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.util.*;
@@ -172,21 +172,29 @@ public class YxyPrinter extends PrinterHandler implements PrinterImpl {
? orderInfo.getDiscountAllAmount().toPlainString()
: "0.00");
printInfoDTO.setOriginalAmount((orderInfo.getOriginAmount().add(orderInfo.getSeatAmount()).add(orderInfo.getPackFee())).toPlainString());
BigDecimal originalAmount = orderInfo.getOriginAmount()==null?BigDecimal.ZERO:orderInfo.getOriginAmount();
printInfoDTO.setOriginalAmount(originalAmount.toPlainString());
if (isPre) {
if (orderInfo.getPlaceNum() == 1) {
BigDecimal refundAmount = BigDecimal.ZERO;
for (OrderDetail orderDetail : detailList) {
refundAmount = refundAmount.add(orderDetail.getReturnAmount());
originalAmount = BigDecimal.ZERO;
for (OrderDetail orderDetail : detailList) {
if(orderDetail.getIsGift()==1){
continue;
}else if(orderDetail.getDiscountSaleAmount().compareTo(BigDecimal.ZERO) > 0){
originalAmount = originalAmount.add((orderDetail.getNum().subtract(orderDetail.getReturnNum()).subtract(orderDetail.getRefundNum())).multiply(orderDetail.getUnitPrice()));
}else {
originalAmount = originalAmount.add((orderDetail.getNum().subtract(orderDetail.getReturnNum()).subtract(orderDetail.getRefundNum())).multiply(orderDetail.getPrice()));
}
printInfoDTO.setOriginalAmount((orderInfo.getOriginAmount().add(orderInfo.getSeatAmount()).add(orderInfo.getPackFee()).subtract(refundAmount)).toPlainString());
}
printInfoDTO.setPayAmount(printInfoDTO.getOriginalAmount());
printInfoDTO.setOriginalAmount((originalAmount.add(orderInfo.getSeatAmount()).add(orderInfo.getPackFee())).toPlainString());
printInfoDTO.setPayAmount(originalAmount.add(orderInfo.getSeatAmount()).add(orderInfo.getPackFee())
.subtract(orderInfo.getDiscountAllAmount()).setScale(2, RoundingMode.HALF_UP).toPlainString());
}else {
printInfoDTO.setPayAmount(originalAmount.subtract(orderInfo.getDiscountAllAmount()).setScale(2, RoundingMode.HALF_UP).toPlainString());
}
printInfoDTO.setPrintTitle(printInfoDTO.getPrintTitle());
if (orderInfo.getSeatNum() != null && orderInfo.getSeatAmount().compareTo(BigDecimal.ZERO) > 0) {
printInfoDTO.setSeatNum(orderInfo.getSeatNum().toString());
printInfoDTO.setSeatAmount(orderInfo.getSeatAmount().toPlainString());
printInfoDTO.setSeatAmount(orderInfo.getSeatAmount().divide(BigDecimal.valueOf(orderInfo.getSeatNum()), 2, RoundingMode.DOWN).toPlainString());
}
if (orderInfo.getPackFee().compareTo(BigDecimal.ZERO) > 0) {
printInfoDTO.setPackFee(orderInfo.getPackFee().toPlainString());

View File

@@ -314,7 +314,7 @@ public class OrderInfoCustomServiceImpl implements OrderInfoCustomService {
}
orderDetails.forEach(item -> item.setOrderTime(DateUtil.date().toLocalDateTime()));
AssertUtil.isListEmpty(orderDetails, "下单失败 购物车为空");
processOrderDetails(orderDetails, param.getLimitRate());
processOrderDetails(orderDetails, param.getLimitRate(),param);
//生成订单
OrderInfo orderInfo = initOrderInfo(param, shopInfo, table);
orderDetailService.createOrderDetails(orderInfo.getId(), orderDetails);
@@ -592,8 +592,12 @@ public class OrderInfoCustomServiceImpl implements OrderInfoCustomService {
OrderDetail orderDetailUp = new OrderDetail();
orderDetailUp.setOrderId(targetOrder.getId());
orderDetailUp.setPlaceNum(1);
QueryWrapper updateWrapper = new QueryWrapper().eq(OrderDetail::getOrderId, sourceOrder.getId());
if (CollUtil.isNotEmpty(param.getDetailIds())) {
updateWrapper.in(OrderDetail::getId, param.getDetailIds());
}
orderDetailService.update(orderDetailUp,
new QueryWrapper().eq(OrderDetail::getOrderId, sourceOrder.getId()).in(OrderDetail::getId, param.getDetailIds()));
updateWrapper);
redisService.set(RedisCst.classKeyExpired.EXPIRED_ORDER + targetOrder.getId(), "", 60 * 15);
}
} else {
@@ -1024,7 +1028,8 @@ public class OrderInfoCustomServiceImpl implements OrderInfoCustomService {
*
* @param orderDetails 订单详情 需要回填
*/
private void processOrderDetails(List<OrderDetail> orderDetails, LimitRateDTO limitRate) throws CzgException {
private void processOrderDetails(List<OrderDetail> orderDetails, LimitRateDTO limitRate,OrderInfoAddDTO param) throws CzgException {
BigDecimal packFee = BigDecimal.ZERO;
for (OrderDetail detail : orderDetails) {
if (!detail.getIsTemporary().equals(1) && detail.getProductId() > 0) {
Product product = productService.getOne(QueryWrapper.create()
@@ -1050,7 +1055,9 @@ public class OrderInfoCustomServiceImpl implements OrderInfoCustomService {
detail.setUnitPrice(detail.getPrice());
}
detail.setPayAmount(detail.getNum().multiply(detail.getUnitPrice()));
packFee = packFee.add(detail.getPackAmount().multiply(detail.getPackNumber()));
}
param.setPackFee(packFee);
}
@Override

View File

@@ -415,6 +415,7 @@ public class OrderPayServiceImpl implements OrderPayService {
} else {
orderDetail.setStatus(OrderStatusEnums.PART_REFUND.getCode());
}
orderDetail.setReturnAmount(orderDetail.getReturnAmount().add(refundDetail.getReturnAmount()));
} else {
orderDetail.setReturnNum(orderDetail.getReturnNum().add(refNum));
if (orderDetail.getPackNumber().compareTo(BigDecimal.ZERO) > 0 && orderDetail.getPackNumber().compareTo(orderDetail.getNum().subtract(orderDetail.getReturnNum())) > 0) {
@@ -423,12 +424,9 @@ public class OrderPayServiceImpl implements OrderPayService {
}
orderDetail.setRefundNo(refPayOrderNo);
orderDetail.setRefundRemark(orderDetail.getRefundRemark() + param.getRefundReason());
// if (isPay) {
orderDetail.setReturnAmount(orderDetail.getReturnAmount().add(refundDetail.getReturnAmount()));
if (orderDetail.getReturnAmount().compareTo(orderDetail.getPayAmount()) > 0) {
orderDetail.setReturnAmount(orderDetail.getPayAmount());
}
// }
orderDetailService.updateById(orderDetail);
if (orderDetail.getProductId() != null && orderDetail.getProductId() > 0) {
returnProMap.put(Convert.toStr(orderDetail.getProductId()), refundDetail.getNum());
@@ -441,7 +439,8 @@ public class OrderPayServiceImpl implements OrderPayService {
} else if (isPay) {
orderInfo.setStatus(OrderStatusEnums.REFUND.getCode());
}
} else {
}
else {
orderInfo.setStatus(OrderStatusEnums.REFUND.getCode());
List<OrderDetail> orderDetails = orderDetailService.list(
QueryWrapper.create().select(OrderDetail::getId, OrderDetail::getProductId, OrderDetail::getNum, OrderDetail::getReturnNum, OrderDetail::getPackAmount, OrderDetail::getReturnNum)