From 59bd4110e5d3ab3502be7198928e1a311438b2ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Tue, 17 Dec 2024 19:00:57 +0800 Subject: [PATCH 01/16] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E4=B8=8B=E5=8D=95isPrint=20is=20null=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashierservice/rabbit/PrintConsumer.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintConsumer.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintConsumer.java index 313d3a4..50b93e2 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintConsumer.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintConsumer.java @@ -1,11 +1,13 @@ package com.chaozhanggui.system.cashierservice.rabbit; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.chaozhanggui.system.cashierservice.dao.TbOrderDetailMapper; import com.chaozhanggui.system.cashierservice.dao.TbOrderInfoMapper; import com.chaozhanggui.system.cashierservice.dao.TbShopInfoMapper; @@ -14,6 +16,7 @@ import com.chaozhanggui.system.cashierservice.entity.TbOrderInfo; import com.chaozhanggui.system.cashierservice.entity.TbPrintMachine; import com.chaozhanggui.system.cashierservice.entity.TbShopInfo; import com.chaozhanggui.system.cashierservice.entity.dto.CallNumPrintDTO; +import com.chaozhanggui.system.cashierservice.mybatis.MPOrderDetailMapper; import com.chaozhanggui.system.cashierservice.mybatis.MpPrintMachineMapper; import com.chaozhanggui.system.cashierservice.rabbit.print.PrinterHandler; import com.chaozhanggui.system.cashierservice.util.Utils; @@ -24,6 +27,8 @@ import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; @Slf4j @Component @@ -31,14 +36,16 @@ public class PrintConsumer { private final TbOrderInfoMapper tbOrderInfoMapper; private final TbShopInfoMapper tbShopInfoMapper; private final TbOrderDetailMapper tbOrderDetailMapper; + private final MPOrderDetailMapper mpOrderDetailMapper; private final MpPrintMachineMapper mpPrintMachineMapper; private final PrinterHandler printerHandler; - public PrintConsumer(TbOrderInfoMapper tbOrderInfoMapper, TbShopInfoMapper tbShopInfoMapper, TbOrderDetailMapper tbOrderDetailMapper, MpPrintMachineMapper mpPrintMachineMapper, PrinterHandler printerHandler) { + public PrintConsumer(TbOrderInfoMapper tbOrderInfoMapper, TbShopInfoMapper tbShopInfoMapper, TbOrderDetailMapper tbOrderDetailMapper, MPOrderDetailMapper mpOrderDetailMapper, MpPrintMachineMapper mpPrintMachineMapper, PrinterHandler printerHandler) { this.tbOrderInfoMapper = tbOrderInfoMapper; this.tbShopInfoMapper = tbShopInfoMapper; this.tbOrderDetailMapper = tbOrderDetailMapper; + this.mpOrderDetailMapper = mpOrderDetailMapper; this.mpPrintMachineMapper = mpPrintMachineMapper; this.printerHandler = printerHandler; } @@ -65,10 +72,21 @@ public class PrintConsumer { for (Object orderDetail : orderDetailIds) { orderDetails.add(JSONObject.parseObject(orderDetail.toString(), TbOrderDetail.class)); } + if(CollUtil.isEmpty(orderDetails)){ + return; + } + List ids = orderDetails.stream().map(TbOrderDetail::getId).collect(Collectors.toList()); + List detailList = mpOrderDetailMapper.selectList(Wrappers.lambdaQuery().in(TbOrderDetail::getId, ids)); + if(CollUtil.isEmpty(detailList)){ + return; + } + Map isPrintMap = detailList.stream().collect(Collectors.toMap(TbOrderDetail::getId, TbOrderDetail::getIsPrint)); + for (TbOrderDetail detail : orderDetails) { + detail.setIsPrint(isPrintMap.get(detail.getId())); + } if (orderDetails.isEmpty()) { return; } - // 菜品票 getPrintMachine(Integer.valueOf(orderInfo.getShopId()), "cash", "one", null).forEach(machine -> { log.info("打印机信息: {}", machine); From 71de503e22d6b7f01bd4467505e7858e4c635fc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Wed, 18 Dec 2024 11:08:01 +0800 Subject: [PATCH 02/16] =?UTF-8?q?fix:=20=E6=8C=82=E8=B4=A6=E6=94=AF?= =?UTF-8?q?=E4=BB=98=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PayController.java | 16 ++- .../cashierservice/entity/TbOrderInfo.java | 1 + .../cashierservice/entity/dto/CreditDTO.java | 22 +++ .../cashierservice/service/PayService.java | 135 ++++++++++++++---- 4 files changed, 147 insertions(+), 27 deletions(-) create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/CreditDTO.java diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/controller/PayController.java b/src/main/java/com/chaozhanggui/system/cashierservice/controller/PayController.java index 87c7fa0..dbd9c04 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/controller/PayController.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/PayController.java @@ -15,6 +15,7 @@ import com.chaozhanggui.system.cashierservice.dao.TbShopInfoMapper; import com.chaozhanggui.system.cashierservice.entity.TbOrderDetail; import com.chaozhanggui.system.cashierservice.entity.TbOrderInfo; import com.chaozhanggui.system.cashierservice.entity.TbShopInfo; +import com.chaozhanggui.system.cashierservice.entity.dto.CreditDTO; import com.chaozhanggui.system.cashierservice.entity.dto.ReturnGroupOrderDto; import com.chaozhanggui.system.cashierservice.entity.dto.ReturnOrderDTO; import com.chaozhanggui.system.cashierservice.entity.dto.VipPayDTO; @@ -25,6 +26,7 @@ import com.chaozhanggui.system.cashierservice.sign.CodeEnum; import com.chaozhanggui.system.cashierservice.sign.Result; import com.chaozhanggui.system.cashierservice.util.IpUtil; import com.chaozhanggui.system.cashierservice.util.JSONUtil; +import com.chaozhanggui.system.cashierservice.util.Utils; import com.chaozhanggui.system.cashierservice.util.WechatUtil; import com.fasterxml.jackson.core.JsonProcessingException; import lombok.extern.slf4j.Slf4j; @@ -214,12 +216,20 @@ public class PayController { } if ((vipPayDTO.getPayAmount() != null && vipPayDTO.getPayAmount().compareTo(BigDecimal.ZERO) <= 0) || - (vipPayDTO.getDiscountAmount() != null && vipPayDTO.getDiscountAmount().compareTo(BigDecimal.ZERO) <= 0)) { + (vipPayDTO.getDiscountAmount() != null && vipPayDTO.getDiscountAmount().compareTo(BigDecimal.ZERO) <= 0)) { return Result.fail("折扣金额必须大于0"); } return payService.vipPay(vipPayDTO.getOrderId(), token, vipPayDTO.getVipUserId(), vipPayDTO.getPayAmount(), vipPayDTO.getDiscountAmount()); } + /** + * 挂账支付 + */ + @PostMapping("creditPay") + public Result creditPay(@RequestHeader("token") String token, @RequestBody CreditDTO creditDTO) { + return payService.creditPay(creditDTO, token); + } + /** * 银行卡支付 * @@ -315,11 +325,11 @@ public class PayController { @GetMapping("/noToken/queryOrderInfo") public Result noTokenQueryOrderInfo(String orderId) { - if(StrUtil.isBlank(orderId)){ + if (StrUtil.isBlank(orderId)) { return Result.fail("订单id不能为空"); } TbOrderInfo orderInfo = tbOrderInfoMapper.selectByPrimaryKey(Integer.valueOf(orderId)); - if(orderInfo == null){ + if (orderInfo == null) { return Result.fail("订单不存在"); } Map data = new HashMap<>(4); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderInfo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderInfo.java index ffbf016..5a5bfa6 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderInfo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderInfo.java @@ -122,6 +122,7 @@ public class TbOrderInfo implements Serializable { private BigDecimal pointsDiscountAmount; private String refundRemark; private Integer pointsNum; + private String creditBuyerId; public TbOrderInfo(){ super(); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/CreditDTO.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/CreditDTO.java new file mode 100644 index 0000000..4c479e8 --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/CreditDTO.java @@ -0,0 +1,22 @@ +package com.chaozhanggui.system.cashierservice.entity.dto; + +import lombok.Data; + +import javax.validation.constraints.DecimalMin; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; + +@Data +public class CreditDTO { + @NotNull + private Integer orderId; + @NotEmpty + private String creditBuyerId; + @DecimalMin("0.00") + private BigDecimal payAmount; + @DecimalMin("0.00") + private BigDecimal discountAmount; +} + diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java index a6ec140..de6c638 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java @@ -15,6 +15,7 @@ import com.chaozhanggui.system.cashierservice.bean.TableStateEnum; import com.chaozhanggui.system.cashierservice.bean.constant.TableConstant; import com.chaozhanggui.system.cashierservice.dao.*; import com.chaozhanggui.system.cashierservice.entity.*; +import com.chaozhanggui.system.cashierservice.entity.dto.CreditDTO; import com.chaozhanggui.system.cashierservice.entity.dto.OrderInfoCouponInfoDTO; import com.chaozhanggui.system.cashierservice.entity.dto.ReturnGroupOrderDto; import com.chaozhanggui.system.cashierservice.entity.dto.ReturnOrderDTO; @@ -146,14 +147,14 @@ public class PayService { private final MpProductStockDetailMapper mpProductStockDetailMapper; private final MpOrderInfoService mpOrderInfoService; private final TbMemberPointsService memberPointsService; - + private final TbCreditBuyerOrderService creditBuyerOrderService; private final Utils utils; @Autowired private MPOrderInfoMapper mPOrderInfoMapper; - public PayService(RedisTemplate redisTemplate, MpCashierCartService mpCashierCartService, TbShopCouponService shopCouponService, MpOrderDetailService mpOrderDetailService, MpShopUnitMapper mpShopUnitMapper, MpProductStockDetailMapper mpProductStockDetailMapper, MpOrderInfoService mpOrderInfoService, Utils utils) { + public PayService(RedisTemplate redisTemplate, MpCashierCartService mpCashierCartService, TbShopCouponService shopCouponService, MpOrderDetailService mpOrderDetailService, MpShopUnitMapper mpShopUnitMapper, MpProductStockDetailMapper mpProductStockDetailMapper, MpOrderInfoService mpOrderInfoService, TbMemberPointsService memberPointsService, TbCreditBuyerOrderService creditBuyerOrderService, Utils utils) { this.redisTemplate = redisTemplate; this.mpCashierCartService = mpCashierCartService; this.shopCouponService = shopCouponService; @@ -161,8 +162,9 @@ public class PayService { this.mpShopUnitMapper = mpShopUnitMapper; this.mpProductStockDetailMapper = mpProductStockDetailMapper; this.mpOrderInfoService = mpOrderInfoService; + this.memberPointsService = memberPointsService; + this.creditBuyerOrderService = creditBuyerOrderService; this.utils = utils; - memberPointsService = null; } public static void main(String[] args) { @@ -286,7 +288,7 @@ public class PayService { return Result.fail(CodeEnum.PAYTYPENOEXIST); } - utils.runFunAndTransactional(() -> { + utils.runFunAndTransactional(() -> { TbOrderPayment payment = tbOrderPaymentMapper.selectByOrderId(orderId); if (ObjectUtil.isEmpty(payment) || payment == null) { payment = new TbOrderPayment(); @@ -875,6 +877,90 @@ public class PayService { return Result.success(SUCCESS); } + public Result creditPay(CreditDTO creditDTO, String token) { + + TbOrderInfo orderInfo = tbOrderInfoMapper.selectByPrimaryKey(creditDTO.getOrderId()); + + if (ObjectUtil.isEmpty(orderInfo)) { + return Result.fail(CodeEnum.ORDERNOEXIST); + } + + if (!"unpaid".equals(orderInfo.getStatus())) { + return Result.fail(CodeEnum.ORDERSTATUSERROR); + } + + + int count = tbShopPayTypeMapper.countSelectByShopIdAndPayType(orderInfo.getShopId(), "cash"); + if (count < 1) { + return Result.fail(CodeEnum.PAYTYPENOEXIST); + } + + + if (creditDTO.getPayAmount().add(creditDTO.getDiscountAmount()).compareTo(orderInfo.getOrderAmount()) != 0) { + return Result.fail("优惠金额 + 支付金额不等于订单金额"); + } + + creditBuyerOrderService.save(creditDTO.getCreditBuyerId(), Long.valueOf(orderInfo.getId())); + + utils.runFunAndTransactional(() -> { + + + if (creditDTO.getPayAmount() != null && creditDTO.getDiscountAmount() != null) { + orderInfo.setPayAmount(creditDTO.getPayAmount()); + orderInfo.setDiscountAmount(creditDTO.getDiscountAmount()); + orderInfo.setDiscountRatio(ObjectUtil.isNotEmpty(creditDTO.getPayAmount()) ? creditDTO.getPayAmount() + .divide(orderInfo.getOrderAmount(), 2, RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_DOWN) : null); + } else { + orderInfo.setPayAmount(orderInfo.getOrderAmount()); + } + orderInfo.setCreditBuyerId(creditDTO.getCreditBuyerId()); + orderInfo.setPayType("creditBuyer"); + orderInfo.setStatus("closed"); + orderInfo.setPayOrderNo("deposit".concat(SnowFlakeUtil.generateOrderNo())); + tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo); + //更新购物车状态 + mpCashierCartService.updateStateByOrderId(TableConstant.OrderInfo.Status.CLOSED, orderInfo.getId()); + + + if (ObjectUtil.isNotNull(orderInfo.getDiscountRatio()) && ObjectUtil.isNotEmpty(orderInfo.getDiscountRatio())) { + tbOrderDetailMapper.updateStatusByOrderId(creditDTO.getOrderId(), "closed", orderInfo.getDiscountRatio()); + } else { + tbOrderDetailMapper.updateStatusByOrderId(creditDTO.getOrderId(), "closed", null); + } + return null; + }); + + + JSONObject jsonObject = new JSONObject(); + jsonObject.put("token", token); + jsonObject.put("type", "create"); + jsonObject.put("orderId", creditDTO.getOrderId()); + + producer.putOrderCollect(jsonObject.toJSONString()); + + // 打印消息 + if (!OrderUseTypeEnum.DINE_IN_AFTER.getValue().equals(orderInfo.getUseType())) { + List detailList = mPOrderDetailMapper.selectList(new LambdaQueryWrapper() + .eq(TbOrderDetail::getOrderId, orderInfo.getId()) + .eq(TbOrderDetail::getStatus, "closed")); + rabbitMsgUtils.printDishesTicket(orderInfo.getId(), false, detailList.toArray(new TbOrderDetail[0])); + } + rabbitMsgUtils.printPlaceTicket(orderInfo.getId(), false); + + // 发送库存记录mq消息 + JSONObject mqData = new JSONObject(); + mqData.put("orderId", creditDTO.getOrderId()); + mqData.put("type", "pc"); + producer.sendStockSaleMsg(mqData); + + String tableCartKey = RedisCst.getCurrentOrderKey(orderInfo.getTableId(), + orderInfo.getShopId()); + redisUtil.del(tableCartKey); + clearTableInfoCache(orderInfo); + + return Result.success(SUCCESS); + } + public Result vipPay(Integer orderId, String token, Integer vipUserId, BigDecimal payAmount, BigDecimal discountAmount) { if (ObjectUtil.isEmpty(orderId)) { return Result.fail(CodeEnum.PARAM); @@ -1307,24 +1393,24 @@ public class PayService { // TbOrderInfo returnOrder = mpOrderInfoService.selectReturnOrderByOrderId(returnOrderDTO.getOrderId()); TbOrderInfo returnOrder = new TbOrderInfo(); - String orderNo = generateOrderNumber(); - cn.hutool.core.bean.BeanUtil.copyProperties(oldOrderInfo, returnOrder); - returnOrder.setId(null); - returnOrder.setOrderNo(orderNo); - returnOrder.setRefundAmount(returnAmount); - returnOrder.setOrderType("return"); - returnOrder.setStatus(isOnline ? "refunding" : "refund"); - returnOrder.setUpdatedAt(null); - returnOrder.setSystemTime(DateUtil.date().getTime()); - returnOrder.setCreatedAt(DateUtil.date().getTime()); - returnOrder.setPayOrderNo(null); - returnOrder.setSource(oldOrderInfo.getId()); - returnOrder.setRefundRemark(returnOrderDTO.getNote()); - returnOrder.setOrderAmount(returnAmount); - returnOrder.setAmount(returnAmount); - returnOrder.setSettlementAmount(returnAmount); - returnOrder.setPayAmount(returnAmount); - mPOrderInfoMapper.insert(returnOrder); + String orderNo = generateOrderNumber(); + cn.hutool.core.bean.BeanUtil.copyProperties(oldOrderInfo, returnOrder); + returnOrder.setId(null); + returnOrder.setOrderNo(orderNo); + returnOrder.setRefundAmount(returnAmount); + returnOrder.setOrderType("return"); + returnOrder.setStatus(isOnline ? "refunding" : "refund"); + returnOrder.setUpdatedAt(null); + returnOrder.setSystemTime(DateUtil.date().getTime()); + returnOrder.setCreatedAt(DateUtil.date().getTime()); + returnOrder.setPayOrderNo(null); + returnOrder.setSource(oldOrderInfo.getId()); + returnOrder.setRefundRemark(returnOrderDTO.getNote()); + returnOrder.setOrderAmount(returnAmount); + returnOrder.setAmount(returnAmount); + returnOrder.setSettlementAmount(returnAmount); + returnOrder.setPayAmount(returnAmount); + mPOrderInfoMapper.insert(returnOrder); for (TbOrderDetail orderDetail : detailList) { orderDetail.setOrderId(returnOrder.getId()); @@ -1434,11 +1520,11 @@ public class PayService { orderInfo.setRefundAmount(orderInfo.getRefundAmount().add(returnOrderInfo.getRefundAmount())); orderInfo.setRefundRemark(returnOrderDTO.getNote()); if (hasNormalReturn && ("scanCode".equals(payType) || "wx_lite".equals(payType))) { - if (returnOrderDTO.getIsOnline() != null && !returnOrderDTO.getIsOnline()) { + if (returnOrderDTO.getIsOnline() != null && !returnOrderDTO.getIsOnline()) { mpOrderDetailService.updateStatusByOrderIdAndIds(TableConstant.OrderInfo.Status.REFUNDING, TableConstant.OrderInfo.Status.REFUND, returnOrderDTO.getOrderId(), returnOrderDTO.getOrderDetails().stream().map(ReturnOrderDTO.OrderDetail::getId).collect(Collectors.toList())); - }else { + } else { TbMerchantThirdApply thirdApply = tbMerchantThirdApplyMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getMerchantId())); MsgException.checkNull(thirdApply, "支付参数配置错误"); @@ -2489,4 +2575,5 @@ public class PayService { } + } From ba813d268e617adaf3434d67e6ffe2db7a080043 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Wed, 18 Dec 2024 14:54:22 +0800 Subject: [PATCH 03/16] =?UTF-8?q?=E8=B5=A0=E8=8F=9C=E5=B0=8F=E7=A5=A8?= =?UTF-8?q?=E9=9C=80=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashierservice/entity/TbOrderDetail.java | 4 +++ .../cashierservice/rabbit/PrintConsumer.java | 26 ++++++++++---- .../rabbit/PrintMechineConsumer.java | 17 ++++++++++ .../rabbit/print/PrinterHandler.java | 34 ++++++++++++++++--- .../service/CloudPrinterService.java | 12 +++++++ 5 files changed, 81 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java index 52589da..3abbb62 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java @@ -2,6 +2,7 @@ package com.chaozhanggui.system.cashierservice.entity; import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data; +import org.springframework.data.annotation.Transient; import java.io.Serializable; import java.math.BigDecimal; @@ -59,6 +60,9 @@ public class TbOrderDetail implements Serializable { private BigDecimal canReturnAmount; private BigDecimal returnAmount; private Integer isPrint; + @Transient + @TableField(exist = false) + private Integer isGift; private BigDecimal discountSaleAmount; private String discountSaleNote; diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintConsumer.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintConsumer.java index 50b93e2..63a7cb7 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintConsumer.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintConsumer.java @@ -11,11 +11,9 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.chaozhanggui.system.cashierservice.dao.TbOrderDetailMapper; import com.chaozhanggui.system.cashierservice.dao.TbOrderInfoMapper; import com.chaozhanggui.system.cashierservice.dao.TbShopInfoMapper; -import com.chaozhanggui.system.cashierservice.entity.TbOrderDetail; -import com.chaozhanggui.system.cashierservice.entity.TbOrderInfo; -import com.chaozhanggui.system.cashierservice.entity.TbPrintMachine; -import com.chaozhanggui.system.cashierservice.entity.TbShopInfo; +import com.chaozhanggui.system.cashierservice.entity.*; import com.chaozhanggui.system.cashierservice.entity.dto.CallNumPrintDTO; +import com.chaozhanggui.system.cashierservice.mybatis.MPCashierCartMapper; import com.chaozhanggui.system.cashierservice.mybatis.MPOrderDetailMapper; import com.chaozhanggui.system.cashierservice.mybatis.MpPrintMachineMapper; import com.chaozhanggui.system.cashierservice.rabbit.print.PrinterHandler; @@ -37,15 +35,17 @@ public class PrintConsumer { private final TbShopInfoMapper tbShopInfoMapper; private final TbOrderDetailMapper tbOrderDetailMapper; private final MPOrderDetailMapper mpOrderDetailMapper; + private final MPCashierCartMapper mpCashierCartMapper; private final MpPrintMachineMapper mpPrintMachineMapper; private final PrinterHandler printerHandler; - public PrintConsumer(TbOrderInfoMapper tbOrderInfoMapper, TbShopInfoMapper tbShopInfoMapper, TbOrderDetailMapper tbOrderDetailMapper, MPOrderDetailMapper mpOrderDetailMapper, MpPrintMachineMapper mpPrintMachineMapper, PrinterHandler printerHandler) { + public PrintConsumer(TbOrderInfoMapper tbOrderInfoMapper, TbShopInfoMapper tbShopInfoMapper, TbOrderDetailMapper tbOrderDetailMapper, MPOrderDetailMapper mpOrderDetailMapper, MPCashierCartMapper mpCashierCartMapper, MpPrintMachineMapper mpPrintMachineMapper, PrinterHandler printerHandler) { this.tbOrderInfoMapper = tbOrderInfoMapper; this.tbShopInfoMapper = tbShopInfoMapper; this.tbOrderDetailMapper = tbOrderDetailMapper; this.mpOrderDetailMapper = mpOrderDetailMapper; + this.mpCashierCartMapper = mpCashierCartMapper; this.mpPrintMachineMapper = mpPrintMachineMapper; this.printerHandler = printerHandler; } @@ -72,18 +72,24 @@ public class PrintConsumer { for (Object orderDetail : orderDetailIds) { orderDetails.add(JSONObject.parseObject(orderDetail.toString(), TbOrderDetail.class)); } - if(CollUtil.isEmpty(orderDetails)){ + if (CollUtil.isEmpty(orderDetails)) { return; } List ids = orderDetails.stream().map(TbOrderDetail::getId).collect(Collectors.toList()); List detailList = mpOrderDetailMapper.selectList(Wrappers.lambdaQuery().in(TbOrderDetail::getId, ids)); - if(CollUtil.isEmpty(detailList)){ + if (CollUtil.isEmpty(detailList)) { return; } Map isPrintMap = detailList.stream().collect(Collectors.toMap(TbOrderDetail::getId, TbOrderDetail::getIsPrint)); for (TbOrderDetail detail : orderDetails) { detail.setIsPrint(isPrintMap.get(detail.getId())); } + List cartList = mpCashierCartMapper.selectList(Wrappers.lambdaQuery().eq(TbCashierCart::getOrderId, orderInfo.getId())); + Map map = cartList.stream().collect(Collectors.toMap(TbCashierCart::getId, TbCashierCart::getIsGift)); + orderDetails.parallelStream().forEach(item->{ + int isGift = "true".equals(map.get(item.getCartId())) ? 1 : 0; + item.setIsGift(isGift); + }); if (orderDetails.isEmpty()) { return; } @@ -127,6 +133,12 @@ public class PrintConsumer { getPrintMachine(shopInfo.getId(), "cash", "normal", null).forEach(machine -> { List tbOrderDetails = tbOrderDetailMapper.selectAllByOrderId(orderInfo.getId()); + List cartList = mpCashierCartMapper.selectList(Wrappers.lambdaQuery().eq(TbCashierCart::getOrderId, orderInfo.getId())); + Map map = cartList.stream().collect(Collectors.toMap(TbCashierCart::getId, TbCashierCart::getIsGift)); + tbOrderDetails.parallelStream().forEach(item->{ + int isGift = "true".equals(map.get(item.getCartId())) ? 1 : 0; + item.setIsGift(isGift); + }); printerHandler.handleRequest(machine, isReturn, orderInfo, tbOrderDetails, null); // printPlaceTicket(isReturn, machine, orderInfo, shopInfo); }); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java index 7d5be56..d7234e2 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java @@ -243,6 +243,9 @@ public class PrintMechineConsumer { if (it.getIsMember() == 1) { unitPrice = it.getMemberPrice(); } + if (it.getIsGift() == 1) { + unitPrice = BigDecimal.ZERO; + } BigDecimal subTotal = NumberUtil.mul(it.getNum(), unitPrice.subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), subTotal.toPlainString(), remark, it.getProGroupInfo()); detailList.add(detail); @@ -324,6 +327,10 @@ public class PrintMechineConsumer { c.getId().toString().equals(categoryId) ).count(); } + Integer isGift = ObjectUtil.defaultIfNull(it.getIsGift(), 0); + if (isGift == 1) { + it.setProductName("【赠】" + it.getProductName()); + } log.info("获取当前类别是否未打印类别:{}", count); if (count > 0) { // 统计已打数量 @@ -545,6 +552,10 @@ public class PrintMechineConsumer { c.getId().toString().equals(categoryId) ).count(); } + Integer isGift = ObjectUtil.defaultIfNull(it.getIsGift(), 0); + if (isGift == 1) { + it.setProductName("【赠】" + it.getProductName()); + } String classifyPrint = tbPrintMachineWithBLOBs.getClassifyPrint(); // 如果是部分打印,并且所属分类不在设置的列表中,则不打印 if ("1".equals(classifyPrint) && count == 0) { @@ -603,6 +614,9 @@ public class PrintMechineConsumer { if (it.getIsMember() == 1) { unitPrice = it.getMemberPrice(); } + if (it.getIsGift() == 1) { + unitPrice = BigDecimal.ZERO; + } BigDecimal subTotal = NumberUtil.mul(it.getNum(), unitPrice.subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), subTotal.toPlainString(), remark, it.getProGroupInfo()); detailList.add(detail); @@ -671,6 +685,9 @@ public class PrintMechineConsumer { if (it.getIsMember() == 1) { unitPrice = it.getMemberPrice(); } + if ("true".equals(it.getIsGift())) { + unitPrice = BigDecimal.ZERO; + } BigDecimal subTotal = NumberUtil.mul(it.getNumber(), unitPrice.subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getName(), it.getNumber().toString(), subTotal.toPlainString(), remark, it.getProGroupInfo()); detailList.add(detail); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/PrinterHandler.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/PrinterHandler.java index 3708220..afbdc47 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/PrinterHandler.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/PrinterHandler.java @@ -88,7 +88,7 @@ public abstract class PrinterHandler { log.info("开始打印退单菜品,商品名:{}", item.getProductName()); Integer isWaitCall = ObjectUtil.defaultIfNull(item.getIsWaitCall(), 0); if (isWaitCall == 1) { - if (!item.getProductName().startsWith("【等叫】")) { + if (!item.getProductName().contains("【等叫】")) { item.setProductName("【等叫】" + item.getProductName()); } } @@ -97,10 +97,14 @@ public abstract class PrinterHandler { if (isTemporary == 1) { item.setProductId(0); item.setProductSkuId(0); - if (!item.getProductName().startsWith("【临】")) { + if (!item.getProductName().contains("【临】")) { item.setProductName("【临】" + item.getProductName()); } } + Integer isGift = ObjectUtil.defaultIfNull(item.getIsGift(), 0); + if (isGift == 1 && !item.getProductName().contains("【赠】")) { + item.setProductName("【赠】" + item.getProductName()); + } // 台位费不打印 if (item.getProductId().equals(-999)) { log.info("台位费商品,不打印"); @@ -131,9 +135,9 @@ public abstract class PrinterHandler { } String classifyPrint = machine.getClassifyPrint(); // 如果是部分打印,并且所属分类不在设置的列表中,则不打印 - if("1".equals(classifyPrint) && count == 0) { + if ("1".equals(classifyPrint) && count == 0) { - }else{ + } else { String remark = StrUtil.isNotBlank(sku.getSpecSnap()) ? sku.getSpecSnap() : ""; item.setRemark(remark); if (isReturn) { @@ -170,10 +174,17 @@ public abstract class PrinterHandler { if (isTemporary == 1) { it.setProductName("【临】" + it.getProductName()); } + Integer isGift = ObjectUtil.defaultIfNull(it.getIsGift(), 0); + if (isGift == 1) { + it.setProductName("【赠】" + it.getProductName()); + } BigDecimal unitPrice = it.getPrice(); - if(it.getIsMember() == 1){ + if (it.getIsMember() == 1) { unitPrice = it.getMemberPrice(); } + if (it.getIsGift() == 1) { + unitPrice = BigDecimal.ZERO; + } BigDecimal subTotal = NumberUtil.mul(it.getNum(), unitPrice.subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), subTotal.toPlainString(), remark, it.getProGroupInfo()); detailList.add(detail); @@ -227,4 +238,17 @@ public abstract class PrinterHandler { Utils.checkValueUnReturn(printerBrand, "打印机品牌未赋值"); return printerBrand.equals(currentBrand) && "network".equals(connectType); } + + public static void main(String[] args) { + String a = "1【赠1】1【临1】1【等叫1】1"; + if (!a.contains("【赠】")) { + System.out.println("不包含"); + } + if (a.indexOf("【临】") != -1) { + System.out.println("包含"); + } + if (a.indexOf("【等叫】") != -1) { + System.out.println("包含"); + } + } } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java index 5b91147..fd75019 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java @@ -281,6 +281,9 @@ public class CloudPrinterService { if (it.getIsMember() == 1) { unitPrice = it.getMemberPrice(); } + if (it.getIsGift() == 1) { + unitPrice = BigDecimal.ZERO; + } BigDecimal subTotal = NumberUtil.mul(it.getNum(), unitPrice.subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), subTotal.toPlainString(), remark, it.getProGroupInfo()); detailList.add(detail); @@ -355,6 +358,9 @@ public class CloudPrinterService { if (it.getIsMember() == 1) { unitPrice = it.getMemberPrice(); } + if ("true".equals(it.getIsGift())) { + unitPrice = BigDecimal.ZERO; + } BigDecimal subTotal = NumberUtil.mul(it.getNumber(), unitPrice.subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getName(), it.getNumber().toString(), subTotal.toPlainString(), remark, it.getProGroupInfo()); detailList.add(detail); @@ -428,6 +434,9 @@ public class CloudPrinterService { if (it.getIsMember() == 1) { unitPrice = it.getMemberPrice(); } + if (it.getIsGift() == 1) { + unitPrice = BigDecimal.ZERO; + } BigDecimal subTotal = NumberUtil.mul(it.getNum(), unitPrice.subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), subTotal.toPlainString(), remark, it.getProGroupInfo()); detailList.add(detail); @@ -484,6 +493,9 @@ public class CloudPrinterService { if (it.getIsMember() == 1) { unitPrice = it.getMemberPrice(); } + if ("true".equals(it.getIsGift())) { + unitPrice = BigDecimal.ZERO; + } BigDecimal subTotal = NumberUtil.mul(it.getNumber(), unitPrice.subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getName(), it.getNumber().toString(), subTotal.toPlainString(), remark, it.getProGroupInfo()); detailList.add(detail); From 51d03bbe543d4eb72032f4112ce2edf859470624 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 19 Dec 2024 09:50:38 +0800 Subject: [PATCH 04/16] =?UTF-8?q?fix:=20=E6=8C=82=E8=B4=A6=E6=94=AF?= =?UTF-8?q?=E4=BB=98=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chaozhanggui/system/cashierservice/service/PayService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java index de6c638..5a5f62e 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java @@ -896,7 +896,7 @@ public class PayService { } - if (creditDTO.getPayAmount().add(creditDTO.getDiscountAmount()).compareTo(orderInfo.getOrderAmount()) != 0) { + if (creditDTO.getPayAmount() != null && creditDTO.getPayAmount().add(creditDTO.getDiscountAmount()).compareTo(orderInfo.getOrderAmount()) != 0) { return Result.fail("优惠金额 + 支付金额不等于订单金额"); } From 6c940850cbba64f574e6a81b1a51d1ec6c38c1ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 19 Dec 2024 14:40:18 +0800 Subject: [PATCH 05/16] =?UTF-8?q?fix:=20=E8=B5=A0=E9=80=81=E5=8D=95?= =?UTF-8?q?=E5=BC=80=E5=95=86=E5=93=81=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/cashierservice/service/OrderService.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java index b012363..babf8bd 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -305,6 +305,7 @@ public class OrderService { LambdaQueryWrapper cartQuery = new LambdaQueryWrapper() .eq(TbCashierCart::getShopId, shopId) .eq(TbCashierCart::getUseType, shopEatTypeInfoDTO.getUseType()) + .eq(TbCashierCart::getIsGift, isGift) .gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime()) .and(r -> r.eq(TbCashierCart::getMasterId, finalMasterId).or().isNull(TbCashierCart::getMasterId).or().eq(TbCashierCart::getMasterId, "")) .in(TbCashierCart::getStatus, "create"); @@ -366,7 +367,7 @@ public class OrderService { List list = cashierCartMapper.selectALlByMasterId(masterId, "create"); TbCashierCart cashierCart = null; if (type.equals("edit")) { - cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO, cartId); + cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO, cartId, isGift); if (cashierCart == null) { needNew = true; } else { @@ -413,6 +414,7 @@ public class OrderService { cashierCart.setTotalNumber(number); cashierCart.setIsPrint(isPrint); cashierCart.setIsPack(isPack); + cashierCart.setIsGift(isGift); cashierCart.resetTotalAmount(); cashierCart.setUuid(uuid); cashierCart.setIsPrint(isPrint); @@ -428,7 +430,7 @@ public class OrderService { if (type.equals("add") || needNew) { if (product == null || product.getGroupType() == null || product.getGroupType() != 1) { - cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO, cartId); + cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO, cartId, isGift); } if (cashierCart != null) { @@ -555,7 +557,7 @@ public class OrderService { return Result.success(CodeEnum.SUCCESS, masterId); } - private TbCashierCart getCashierInfo(Object shopId, Object skuId, Object productId, String tableId, String MasterId, ShopEatTypeInfoDTO shopEatTypeInfoDTO, Integer cartId) { + private TbCashierCart getCashierInfo(Object shopId, Object skuId, Object productId, String tableId, String MasterId, ShopEatTypeInfoDTO shopEatTypeInfoDTO, Integer cartId, String isGift) { LambdaQueryWrapper query = new LambdaQueryWrapper() .eq(TbCashierCart::getShopId, shopId) .eq(TbCashierCart::getSkuId, skuId) @@ -563,6 +565,10 @@ public class OrderService { .in(TbCashierCart::getStatus, "create") .eq(TbCashierCart::getUseType, shopEatTypeInfoDTO.getUseType()); + if (StrUtil.isNotBlank(isGift)) { + query.eq(TbCashierCart::getIsGift, isGift); + } + if (cartId != null) { query.eq(TbCashierCart::getId, cartId); } From ce108efa97134664fd0e161d826894ac5679b543 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 19 Dec 2024 14:44:02 +0800 Subject: [PATCH 06/16] =?UTF-8?q?fix:=20=E8=B5=A0=E9=80=81=E5=8D=95?= =?UTF-8?q?=E5=BC=80=E5=95=86=E5=93=81=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/cashierservice/service/OrderService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java index babf8bd..1b1bbda 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -367,7 +367,7 @@ public class OrderService { List list = cashierCartMapper.selectALlByMasterId(masterId, "create"); TbCashierCart cashierCart = null; if (type.equals("edit")) { - cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO, cartId, isGift); + cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO, cartId, null); if (cashierCart == null) { needNew = true; } else { From df92ad6179c7de7b6d7c4b560cde2b7abed50e09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 19 Dec 2024 17:41:02 +0800 Subject: [PATCH 07/16] =?UTF-8?q?fix:=20=E6=8C=82=E8=B4=A6=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E4=BF=9D=E5=AD=98=E6=8C=82=E8=B4=A6=E4=BA=BAid?= =?UTF-8?q?=E4=B8=A2=E5=A4=B1=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chaozhanggui/system/cashierservice/service/PayService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java index 5a5f62e..19b6e46 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java @@ -917,7 +917,7 @@ public class PayService { orderInfo.setPayType("creditBuyer"); orderInfo.setStatus("closed"); orderInfo.setPayOrderNo("deposit".concat(SnowFlakeUtil.generateOrderNo())); - tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo); + mPOrderInfoMapper.updateById(orderInfo); //更新购物车状态 mpCashierCartService.updateStateByOrderId(TableConstant.OrderInfo.Status.CLOSED, orderInfo.getId()); From 004b3294c47dcc5ddb941196827b75a7a56f2fca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 19 Dec 2024 17:58:04 +0800 Subject: [PATCH 08/16] =?UTF-8?q?fix:=20=E8=B4=AD=E7=89=A9=E8=BD=A6?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=A7=B0=E9=87=8D=E5=95=86=E5=93=81=E6=A0=87?= =?UTF-8?q?=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/cashierservice/entity/TbCashierCart.java | 1 + .../system/cashierservice/entity/TbOrderDetail.java | 2 +- .../system/cashierservice/service/OrderService.java | 3 +++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbCashierCart.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbCashierCart.java index 8d778c6..fdf8dda 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbCashierCart.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbCashierCart.java @@ -89,6 +89,7 @@ public class TbCashierCart implements Serializable { private String proGroupInfo; private String typeEnum; private Integer groupType; + private int isWeight; public void copy(TbCashierCart source) { BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true)); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java index 3abbb62..b5df074 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java @@ -67,5 +67,5 @@ public class TbOrderDetail implements Serializable { private BigDecimal discountSaleAmount; private String discountSaleNote; private String proGroupInfo; - + private int isWeight; } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java index 1b1bbda..8eb0bae 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -544,6 +544,8 @@ public class OrderService { cashierCart.setTableId(tableId); cashierCart.setPlatformType(OrderPlatformTypeEnum.CASH.getValue()); if (product != null) { + cashierCart.setIsWeight("weigh".equals(product.getType()) ? 1 : 0); + resetGroupProductCart(groupProductIdList, product, cashierCart); } list.add(cashierCart); @@ -1087,6 +1089,7 @@ public class OrderService { if (TableConstant.CART_SEAT_ID.equals(cashierCart.getProductId())) { saleAmount = saleAmount.add(shopInfo.getTableFee()); } + orderDetail.setIsWeight(cashierCart.getIsWeight()); orderDetail.setProGroupInfo(cashierCart.getProGroupInfo()); orderDetail.setIsTemporary(cashierCart.getIsTemporary()); From 5cd84c91fa2151ad3070bf486ebbd48c3933250f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 20 Dec 2024 09:17:53 +0800 Subject: [PATCH 09/16] =?UTF-8?q?fix:=20=E5=AE=A2=E5=BA=A7=E8=B4=B9placenu?= =?UTF-8?q?m=E9=BB=98=E8=AE=A4=E5=80=BC=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/cashierservice/service/OrderService.java | 1 - .../system/cashierservice/service/PayService.java | 4 ---- 2 files changed, 5 deletions(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java index 8eb0bae..92aaa82 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -2103,7 +2103,6 @@ public class OrderService { tbCashierCart.setTradeDay(DateUtils.getDay()); tbCashierCart.setStatus("create"); tbCashierCart.setTotalAmount(new BigDecimal(choseCountDTO.getNum()).multiply(shopInfo.getTableFee())); - tbCashierCart.setPlaceNum(1); tbCashierCart.setProductId("-999"); tbCashierCart.setSkuId("-999"); tbCashierCart.setPackFee(BigDecimal.ZERO); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java index 19b6e46..516a66d 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java @@ -1412,10 +1412,6 @@ public class PayService { returnOrder.setPayAmount(returnAmount); mPOrderInfoMapper.insert(returnOrder); - for (TbOrderDetail orderDetail : detailList) { - orderDetail.setOrderId(returnOrder.getId()); - } - updateStockAndRecord(detailList); mpOrderDetailService.updateBatchById(detailList); data.put("returnOrder", returnOrder); From 8fe450dd704ce1aa57c9e866319a4c9d2d9ba39f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 20 Dec 2024 09:45:00 +0800 Subject: [PATCH 10/16] =?UTF-8?q?fix:=20=E5=8F=B0=E6=A1=8C=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chaozhanggui/system/cashierservice/service/OrderService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java index 92aaa82..5242322 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -2071,6 +2071,7 @@ public class OrderService { } TbShopTable shopTable = mpShopTableMapper.selectOne(new LambdaQueryWrapper() + .eq(TbShopTable::getShopId, choseCountDTO.getShopId()) .eq(TbShopTable::getQrcode, choseCountDTO.getTableId())); if (shopTable == null) { throw new NotPrintException("台桌不存在"); From 0e5ac1ceb577b300ee930076f4026f95aaabadef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 20 Dec 2024 10:11:23 +0800 Subject: [PATCH 11/16] =?UTF-8?q?fix:=20=E8=AE=A2=E5=8D=95=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E8=BF=87=E6=BB=A4=E6=8E=89=E9=80=80=E6=AC=BE=E8=AE=A2?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/mapper/TbOrderInfoMapper.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/mapper/TbOrderInfoMapper.xml b/src/main/resources/mapper/TbOrderInfoMapper.xml index 11dc85e..06a70f5 100644 --- a/src/main/resources/mapper/TbOrderInfoMapper.xml +++ b/src/main/resources/mapper/TbOrderInfoMapper.xml @@ -108,6 +108,7 @@ and toi.status in ('refund','closed') + and toi.source is null and toi.trade_day = #{day} From e1a06988830b49775ad7279eca794e10e92978dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 20 Dec 2024 10:16:34 +0800 Subject: [PATCH 12/16] =?UTF-8?q?fix:=20=E8=AE=A2=E5=8D=95=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E8=BF=87=E6=BB=A4=E6=8E=89=E9=80=80=E6=AC=BE=E8=AE=A2?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/mapper/TbOrderInfoMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/mapper/TbOrderInfoMapper.xml b/src/main/resources/mapper/TbOrderInfoMapper.xml index 06a70f5..99e9bc8 100644 --- a/src/main/resources/mapper/TbOrderInfoMapper.xml +++ b/src/main/resources/mapper/TbOrderInfoMapper.xml @@ -108,7 +108,6 @@ and toi.status in ('refund','closed') - and toi.source is null and toi.trade_day = #{day} @@ -116,6 +115,7 @@ and toi.order_no = #{orderNo} + and toi.source is null group by toi.id,toi.shop_id order by toi.id desc From 1eb2c70ea76d69cc8dfc9c00019d2b42dccfa333 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 20 Dec 2024 10:24:27 +0800 Subject: [PATCH 13/16] =?UTF-8?q?fix:=20=E9=80=80=E6=AC=BE=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/cashierservice/service/PayService.java | 10 ++++++++++ src/main/resources/mapper/TbOrderInfoMapper.xml | 1 - 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java index 516a66d..df6f4aa 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java @@ -1283,6 +1283,8 @@ public class PayService { BigDecimal saleAmount = BigDecimal.ZERO; ArrayList remainOrderDetailList = new ArrayList<>(); boolean hasNormalReturn = false; + + ArrayList copyDetailList = new ArrayList<>(); for (TbOrderDetail orderDetail : detailList) { // 原始金额 BigDecimal originalAmount = orderDetail.getPriceAmount(); @@ -1374,6 +1376,11 @@ public class PayService { orderDetail.setReturnAmount(returnAmount); // orderDetail.setStatus(isOnline ? "refunding" : "refund"); orderDetail.setStatus("refund"); + + TbOrderDetail returnOrderDetailCopy = new TbOrderDetail(); + cn.hutool.core.bean.BeanUtil.copyProperties(orderDetail, returnOrderDetailCopy); + returnOrderDetailCopy.setId(null); + copyDetailList.add(returnOrderDetailCopy); } if (returnAmount.compareTo(BigDecimal.ZERO) < 0) { @@ -1411,6 +1418,9 @@ public class PayService { returnOrder.setSettlementAmount(returnAmount); returnOrder.setPayAmount(returnAmount); mPOrderInfoMapper.insert(returnOrder); + // 保存新的退款detail信息 + copyDetailList.forEach(item -> item.setOrderId(returnOrder.getId())); + mpOrderDetailService.saveBatch(copyDetailList); updateStockAndRecord(detailList); mpOrderDetailService.updateBatchById(detailList); diff --git a/src/main/resources/mapper/TbOrderInfoMapper.xml b/src/main/resources/mapper/TbOrderInfoMapper.xml index 99e9bc8..11dc85e 100644 --- a/src/main/resources/mapper/TbOrderInfoMapper.xml +++ b/src/main/resources/mapper/TbOrderInfoMapper.xml @@ -115,7 +115,6 @@ and toi.order_no = #{orderNo} - and toi.source is null group by toi.id,toi.shop_id order by toi.id desc From 9371c2b85ac0216ce45e2727fd7e8ab706b84cb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 20 Dec 2024 10:45:42 +0800 Subject: [PATCH 14/16] =?UTF-8?q?fix:=20=E9=80=80=E6=AC=BE=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chaozhanggui/system/cashierservice/service/PayService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java index df6f4aa..91c15c4 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java @@ -1343,6 +1343,7 @@ public class PayService { if (remainNum.compareTo(BigDecimal.ZERO) <= 0) { returnAmount = returnAmount.add(orderDetail.getPriceAmount()); packAMount = orderDetail.getPackAmount(); + currentDetailAMount = orderDetail.getPriceAmount(); } else { currentDetailAMount = orderDetail.getPriceAmount() .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) From 4fa9644ce2c93de96debb03a36a8ba6ac32e827f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Sat, 21 Dec 2024 09:20:31 +0800 Subject: [PATCH 15/16] =?UTF-8?q?fix:=20=E5=8F=B0=E6=A1=8C=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E5=BA=97=E9=93=BAid=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chaozhanggui/system/cashierservice/service/OrderService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java index 5242322..05fa767 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -290,6 +290,7 @@ public class OrderService { boolean isSeatCart = productId != null && TableConstant.CashierCart.ID.equals(productId.toString()); if ((StrUtil.isNotBlank(tableId))) { TbShopTable shopTable = mpShopTableMapper.selectOne(new LambdaUpdateWrapper() + .eq(TbShopTable::getShopId, shopId) .eq(TbShopTable::getQrcode, tableId) .in(TbShopTable::getStatus, "idle", "using", "pending")); From b7293ca09996e13b43f552dd713832b0cc688cc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Tue, 24 Dec 2024 11:05:50 +0800 Subject: [PATCH 16/16] =?UTF-8?q?=E6=89=93=E5=8D=B0=E7=BB=93=E7=AE=97?= =?UTF-8?q?=E5=8D=95=E8=BF=87=E6=BB=A4=E5=B7=B2=E9=80=80=E8=8F=9C=E7=9A=84?= =?UTF-8?q?=E8=8F=9C=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chaozhanggui/system/cashierservice/rabbit/PrintConsumer.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintConsumer.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintConsumer.java index 63a7cb7..ed581ed 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintConsumer.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintConsumer.java @@ -133,6 +133,7 @@ public class PrintConsumer { getPrintMachine(shopInfo.getId(), "cash", "normal", null).forEach(machine -> { List tbOrderDetails = tbOrderDetailMapper.selectAllByOrderId(orderInfo.getId()); + tbOrderDetails = tbOrderDetails.stream().filter(item -> !"return".equals(item.getStatus())).collect(Collectors.toList()); List cartList = mpCashierCartMapper.selectList(Wrappers.lambdaQuery().eq(TbCashierCart::getOrderId, orderInfo.getId())); Map map = cartList.stream().collect(Collectors.toMap(TbCashierCart::getId, TbCashierCart::getIsGift)); tbOrderDetails.parallelStream().forEach(item->{