From f10fba018a98d10a59f0dd16081b3d7a02b33e72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Tue, 1 Apr 2025 09:33:12 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=89=93=E5=8D=B0=E6=A0=B7=E5=BC=8F?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/czg/service/order/print/FeiPrinter.java | 4 +++- .../java/com/czg/service/order/print/PrinterHandler.java | 1 + .../main/java/com/czg/service/order/print/PrinterImpl.java | 4 +++- .../main/java/com/czg/service/order/print/YxyPrinter.java | 6 ++++-- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/print/FeiPrinter.java b/cash-service/order-service/src/main/java/com/czg/service/order/print/FeiPrinter.java index fe416a58e..473c42b2e 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/print/FeiPrinter.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/print/FeiPrinter.java @@ -77,6 +77,7 @@ public class FeiPrinter extends PrinterHandler implements PrinterImpl { // printMachineLogService.save(machine, "新订单", , ); } + @Override protected void returnDishesPrint(OrderInfo orderInfo, OrderDetail orderDetail, PrintMachine machine) { String remark = orderDetail.getRemark(); @@ -121,13 +122,14 @@ public class FeiPrinter extends PrinterHandler implements PrinterImpl { } PrintInfoDTO printInfoDTO = new PrintInfoDTO().setShopName(shopInfo.getShopName()) + .setCount(count) .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); + printInfoDTO.setPrintTitle(printInfoDTO.getPrintTitle()); String string = buildOrderPrintData(printInfoDTO, detailList); Object resp = sendPrintRequest(machine.getAddress(), string, null, printerNum); diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterHandler.java b/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterHandler.java index 96546a735..332f6ec9e 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterHandler.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterHandler.java @@ -108,6 +108,7 @@ public abstract class PrinterHandler { @Data @Accessors(chain = true) public static class PrintInfoDTO { + private long count; // 打印标题 退款单/结算单 private String printTitle; private String shopName; diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterImpl.java index 5591f9c30..6bed4db8e 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterImpl.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterImpl.java @@ -238,7 +238,9 @@ public interface PrinterImpl { // data.append(StrUtil.format("{}
", printInfoDTO.getShopName())); // data.append("
"); // data.append(""); - data.append(getFormatLabel(StrUtil.format("{}【{}】", printInfoDTO.getPrintTitle(), printInfoDTO.getPickupNum()), signLabelInfo.l, signLabelInfo.center)) + data.append(getFormatLabel(StrUtil.format("{} #{}【{}】", printInfoDTO.getPrintTitle(), printInfoDTO.getCount()), signLabelInfo.l, signLabelInfo.center)) + .append(signLabelInfo.br); + data.append(getFormatLabel(StrUtil.format("桌号: {}", printInfoDTO.getPickupNum()), signLabelInfo.l, signLabelInfo.center)) .append(signLabelInfo.br); // data.append(StrUtil.format("{}【{}】
", printInfoDTO.getPrintTitle(), printInfoDTO.getPickupNum())); diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/print/YxyPrinter.java b/cash-service/order-service/src/main/java/com/czg/service/order/print/YxyPrinter.java index 7ff644f81..f34ae9e7e 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/print/YxyPrinter.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/print/YxyPrinter.java @@ -161,13 +161,15 @@ public class YxyPrinter extends PrinterHandler implements PrinterImpl { .eq(OrderInfo::getTradeDay, orderInfo.getTradeDay()) .eq(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode()) .le(OrderInfo::getCreateTime,orderInfo.getCreateTime()).count(); - PrintInfoDTO printInfoDTO = new PrintInfoDTO().setShopName(shopInfo.getShopName()).setPrintType("普通打印").setPickupNum(getPickupNum(orderInfo)) + 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 ? "预结算单" : "结算单") + .setCount(count) .setRemark(orderInfo.getRemark()).setDiscountAmount(orderInfo.getOriginAmount().subtract(orderInfo.getPayAmount()).toPlainString()); - printInfoDTO.setPrintTitle(printInfoDTO.getPrintTitle()+" #"+count); + printInfoDTO.setPrintTitle(printInfoDTO.getPrintTitle()); String data = buildOrderPrintData(printInfoDTO, detailList); String voiceJson = "{\"PbizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; // String voiceJson = "{\"bizType\":\"2\",\"content\":\"\"}"; From a77ecb41700d9462b542b4401e34707d9fd748e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Mon, 7 Apr 2025 10:12:20 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=95=86=E5=93=81=E5=88=86=E7=BB=84?= =?UTF-8?q?=E6=8E=92=E5=BA=8F=E9=9C=80=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/admin/ProdGroupController.java | 18 +++++++++++- .../com/czg/product/entity/ProdGroup.java | 2 +- .../czg/product/service/ProdGroupService.java | 3 +- .../com/czg/product/vo/ShopProductVo.java | 4 +++ .../service/impl/ProdGroupServiceImpl.java | 15 ++++++---- .../service/impl/UProductServiceImpl.java | 25 +++++++++-------- .../main/resources/mapper/ProductMapper.xml | 28 ++++++++++--------- 7 files changed, 62 insertions(+), 33 deletions(-) diff --git a/cash-api/product-server/src/main/java/com/czg/controller/admin/ProdGroupController.java b/cash-api/product-server/src/main/java/com/czg/controller/admin/ProdGroupController.java index c98f7c320..246a195ff 100644 --- a/cash-api/product-server/src/main/java/com/czg/controller/admin/ProdGroupController.java +++ b/cash-api/product-server/src/main/java/com/czg/controller/admin/ProdGroupController.java @@ -94,7 +94,23 @@ public class ProdGroupController { public CzgResult updateProdGroup(@RequestBody @Validated({UpdateGroup.class, DefaultGroup.class}) ProdGroupDTO dto) { Long shopId = StpKit.USER.getShopId(0L); dto.setShopId(shopId); - prodGroupService.updateProdGroup(dto); + prodGroupService.updateProdGroup(dto,true); + ThreadUtil.execAsync(() -> { + rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId)); + }); + return CzgResult.success(); + } + + /** + * 修改 + */ + @PutMapping + @OperationLog("商品分组-修改") + //@SaAdminCheckPermission("prodGroup:update") + public CzgResult updateProdGroupV2(@RequestBody ProdGroupDTO dto) { + Long shopId = StpKit.USER.getShopId(0L); + dto.setShopId(shopId); + prodGroupService.updateProdGroup(dto,false); ThreadUtil.execAsync(() -> { rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId)); }); diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/entity/ProdGroup.java b/cash-common/cash-common-service/src/main/java/com/czg/product/entity/ProdGroup.java index 6c2b87f9c..cf0e86386 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/product/entity/ProdGroup.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/entity/ProdGroup.java @@ -50,7 +50,7 @@ public class ProdGroup implements Serializable { */ private Integer sort; /** - * 排序方式 0-默认; 1-价格从高到低; 2-销量由高到低; + * 排序方式 0-默认; 1-价格从高到低; 2-价格从低到高; 3-销量由高到低; */ private String sortMode; /** diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/service/ProdGroupService.java b/cash-common/cash-common-service/src/main/java/com/czg/product/service/ProdGroupService.java index a723fc4b6..15b3b0645 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/product/service/ProdGroupService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/service/ProdGroupService.java @@ -56,8 +56,9 @@ public interface ProdGroupService extends IService { * 更新商品分组 * * @param dto 商品分组DTO + * @param isUpdateProduct 是否需要修改分组下的商品 */ - void updateProdGroup(ProdGroupDTO dto); + void updateProdGroup(ProdGroupDTO dto,boolean isUpdateProduct); /** * 禁用商品分组 diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopProductVo.java b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopProductVo.java index b0a642085..ef56c0fd1 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopProductVo.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopProductVo.java @@ -109,4 +109,8 @@ public class ShopProductVo implements Serializable { * 排序 */ private Integer sort; + /** + * 销量 + */ + private BigDecimal salesVolume; } diff --git a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProdGroupServiceImpl.java b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProdGroupServiceImpl.java index 473e2661c..bf9adb21d 100644 --- a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProdGroupServiceImpl.java +++ b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProdGroupServiceImpl.java @@ -88,7 +88,7 @@ public class ProdGroupServiceImpl extends ServiceImpl imp @Override @Cacheable(value = CacheConstant.USER_CLIENT_GROUPS_PRODUCT, key = "#shopId", unless = "#result.isEmpty()") public List queryGroupProductList(Long shopId) { - List groupList = prodGroupMapper.selectListByQueryAs(query().select(ProdGroup::getId, - ProdGroup::getName, ProdGroup::getUseTime, ProdGroup::getSaleStartTime, ProdGroup::getSaleEndTime) - .eq(ProdGroup::getShopId, shopId).eq(ProdGroup::getStatus, StatusEnum.ENABLED.value()) - .orderBy(ProdGroup::getSort, true), ShopGroupProductVo.class); + List groupList = prodGroupMapper.selectListByQueryAs( + query().select(ProdGroup::getId, ProdGroup::getName, ProdGroup::getSortMode, ProdGroup::getUseTime, ProdGroup::getSaleStartTime, ProdGroup::getSaleEndTime) + .eq(ProdGroup::getShopId, shopId).eq(ProdGroup::getStatus, StatusEnum.ENABLED.value()) + .orderBy(ProdGroup::getSort, true), ShopGroupProductVo.class); List productAllList = productMapper.selectGroupProductList(shopId); productAllList.forEach(item -> { item.setIsSaleTime(calcIsSaleTime(item.getDays(), item.getStartTime(), item.getEndTime())); @@ -112,13 +112,16 @@ public class UProductServiceImpl extends ServiceImpl imp product.setIsSaleTime(isSaleTime); }); -// switch (group.getSortMode()) { -// case "0" -> productList.sort(Comparator.comparing(ShopProductVo::getSalePrice)); -// case "1" -> productList.sort((o1, o2) -> o2.getSalePrice().compareTo(o1.getSalePrice())); -// case "2" -> productList.sort((o1, o2) -> o2.getSort().compareTo(o1.getSort())); -// -// } - productList.sort(Comparator.comparing(ShopProductVo::getSalePrice)); + // 1-价格从高到低; 2-价格从低到高; 3-销量由高到低;4-销量由低到高; + if("1".equals(group.getSortMode())){ + productList = productList.stream().sorted(Comparator.comparing(ShopProductVo::getSalePrice).reversed()).toList(); + }else if("2".equals(group.getSortMode())){ + productList = productList.stream().sorted(Comparator.comparing(ShopProductVo::getSalePrice)).toList(); + }else if("3".equals(group.getSortMode())){ + productList = productList.stream().sorted(Comparator.comparing(ShopProductVo::getSalesVolume).reversed()).toList(); + }else if("4".equals(group.getSortMode())){ + productList = productList.stream().sorted(Comparator.comparing(ShopProductVo::getSalesVolume)).toList(); + } group.setProductList(productList); } return groupList.stream().filter(group -> CollUtil.isNotEmpty(group.getProductList())).toList(); diff --git a/cash-service/product-service/src/main/resources/mapper/ProductMapper.xml b/cash-service/product-service/src/main/resources/mapper/ProductMapper.xml index 58b4badb4..86459c688 100644 --- a/cash-service/product-service/src/main/resources/mapper/ProductMapper.xml +++ b/cash-service/product-service/src/main/resources/mapper/ProductMapper.xml @@ -91,20 +91,22 @@ ifnull(t2.suit_num, 1) as suit_num, t1.select_spec_info, t1.group_snap, - t1.pack_fee + t1.pack_fee, + ifnull(t4.sales_volume, 0) as sales_volume from tb_product t1 - left join (select x.product_id, - x.id as sku_id, - MIN(x.sale_price) as sale_price, - x.origin_price, - x.member_price, - x.suit_num - from tb_prod_sku x - where x.is_del = 0 - and x.is_grounding = 1 - and x.shop_id = #{shopId} - group by x.product_id) t2 on t1.id = t2.product_id - left join tb_shop_prod_unit t3 on t1.unit_id = t3.id + left join (select x.product_id, + x.id as sku_id, + MIN(x.sale_price) as sale_price, + x.origin_price, + x.member_price, + x.suit_num + from tb_prod_sku x + where x.is_del = 0 + and x.is_grounding = 1 + and x.shop_id = #{shopId} + group by x.product_id) t2 on t1.id = t2.product_id + left join tb_shop_prod_unit t3 on t1.unit_id = t3.id + left join (select product_id,sum(num) as sales_volume from tb_order_detail where pay_amount is not null group by product_id) t4 on t1.id = t4.product_id