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