From be8c796254dc765f18f3e530f028d970f7d07603 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Mon, 18 Nov 2024 13:56:44 +0800 Subject: [PATCH 01/77] =?UTF-8?q?fix:=20=E8=AE=A2=E5=8D=95=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E5=A2=9E=E5=8A=A0=E6=98=AF=E5=90=A6=E4=BC=9A=E5=91=98?= =?UTF-8?q?=E4=BB=B7=E5=AD=97=E6=AE=B5=E6=A0=87=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/cashierservice/entity/TbOrderDetail.java | 2 ++ .../system/cashierservice/service/OrderService.java | 2 ++ 2 files changed, 4 insertions(+) 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 a37a3d0..418f470 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java @@ -50,4 +50,6 @@ public class TbOrderDetail implements Serializable { private BigDecimal memberPrice; private static final long serialVersionUID = 1L; + private Integer isMember; + } 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 0358dd3..5a1e3ca 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -938,6 +938,8 @@ public class OrderService { if (StringUtils.isNotEmpty(cashierCart.getOrderId())) { orderId = Integer.valueOf(cashierCart.getOrderId()); } + orderDetail.setIsMember(cashierCart.getIsMember()); + orderDetails.add(orderDetail); From 5bf6bc4fed37069b1e6c24a3bfc96fdcac78b9fc Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Mon, 18 Nov 2024 15:16:52 +0800 Subject: [PATCH 02/77] =?UTF-8?q?=E5=95=86=E5=93=81=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashierservice/dao/TbProductMapper.java | 33 +- .../cashierservice/entity/TbProduct.java | 234 ++--- .../entity/TbProductStockDetail.java | 6 +- .../entity/TbProductWithBLOBs.java | 58 -- .../rabbit/ConsMsgConsumer.java | 2 +- .../cashierservice/service/DutyService.java | 2 +- .../cashierservice/service/OrderService.java | 8 +- .../cashierservice/service/PayService.java | 2 +- .../service/ProductService.java | 28 +- .../service/TbGroupOrderInfoService.java | 2 +- src/main/resources/mapper/TbProductMapper.xml | 954 +----------------- 11 files changed, 197 insertions(+), 1132 deletions(-) delete mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProductWithBLOBs.java diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProductMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProductMapper.java index b15b5e8..6ab4228 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProductMapper.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProductMapper.java @@ -1,45 +1,26 @@ package com.chaozhanggui.system.cashierservice.dao; import com.chaozhanggui.system.cashierservice.entity.TbProduct; -import com.chaozhanggui.system.cashierservice.entity.TbProductWithBLOBs; import com.chaozhanggui.system.cashierservice.entity.po.ProConsSkuInfo; -import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; -import org.springframework.stereotype.Component; import java.util.List; public interface TbProductMapper { - int deleteByPrimaryKey(Integer id); - int insert(TbProductWithBLOBs record); - - int insertSelective(TbProductWithBLOBs record); - - TbProductWithBLOBs selectByPrimaryKey(Integer id); - - int updateByPrimaryKeySelective(TbProductWithBLOBs record); - - int updateByPrimaryKeyWithBLOBs(TbProductWithBLOBs record); - - int updateByPrimaryKey(TbProduct record); - - - List selectByShopId(@Param("shopId") String shopId,@Param("commdityName") String commdityName); - List selectByShopIdAndCheckGrounding(@Param("shopId") String shopId,@Param("commdityName") String commdityName); - - - - List selectByShopIdAndShopType(@Param("shopId") String shopId, @Param("categoryId") String categoryId,@Param("commdityName") String commdityName); - List selectByShopIdAndShopTypeCheckGrounding(@Param("shopId") String shopId, @Param("categoryId") String categoryId,@Param("commdityName") String commdityName); - List selectByShopIdAndShopTypeUnGrounding(@Param("shopId") String shopId,@Param("commdityName") String commdityName); + TbProduct selectByPrimaryKey(Integer id); + List selectByShopId(@Param("shopId") String shopId,@Param("commdityName") String commdityName); + List selectByShopIdAndCheckGrounding(@Param("shopId") String shopId,@Param("commdityName") String commdityName); + List selectByShopIdAndShopType(@Param("shopId") String shopId, @Param("categoryId") String categoryId,@Param("commdityName") String commdityName); + List selectByShopIdAndShopTypeCheckGrounding(@Param("shopId") String shopId, @Param("categoryId") String categoryId,@Param("commdityName") String commdityName); + List selectByShopIdAndShopTypeUnGrounding(@Param("shopId") String shopId,@Param("commdityName") String commdityName); Integer countOrderByshopIdAndProductId(@Param("shopId") String shopId, @Param("productId") String productId, @Param("masterId") String masterId,@Param("day") String day, @Param("tableId") String tableId); - + @Update("update tb_product set stock_number = stock_number - #{num,jdbcType=INTEGER} where id = #{productId}") void updateStockById(@Param("productId")Integer productId, @Param("num")Integer num); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProduct.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProduct.java index ce271d4..a8390c3 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProduct.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProduct.java @@ -1,154 +1,160 @@ 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; +import java.util.List; @Data public class TbProduct implements Serializable { + /** + * id + */ private Integer id; - + /** + * 商品分类 + */ private String categoryId; - + /** + * 商品规格 + */ private Integer specId; - - private String sourcePath; - - private Integer brandId; - + /** + * 商户Id + */ private String merchantId; private String shopId; - + /** + * 商品名称 + */ private String name; - + /** + * 短标题--促销语 + */ private String shortTitle; - + /** + * 商品类型(属性):REAL- 实物商品 VIR---虚拟商品 + */ private String type; - + /** + * 包装费 + */ private BigDecimal packFee; - + /** + * 商品最低价 + */ private BigDecimal lowPrice; private BigDecimal lowMemberPrice; - - private String unitId; - - private String unitSnap; - - private String coverImg; - - private String shareImg; - - private String videoCoverImg; - - private Integer sort; - - private Integer limitNumber; - - private Integer productScore; - - private Byte status; - - private String failMsg; - - private Byte isRecommend; - - private Byte isHot; - - private Byte isNew; - - private Byte isOnSale; - - private Byte isShow; - - private String typeEnum; - /** - * 是否共享库存 + * 单位Id */ - private Byte isDistribute; - - private Byte isDel; - - private Byte isStock; - - private Byte isPauseSale; - - private Byte isFreeFreight; - - private Long freightId; - - private String strategyType; - - private Integer strategyId; - - private Byte isVip; - - private Byte isDelete; + private Integer unitId; + private String unitSnap; + /** + * 商品封面图 + */ + private String coverImg; + /** + * 商品图片(第一张为缩略图,其他为详情) + */ + private String images; + /** + * 排序 + */ + private Integer sort; + /** + * 0--待审核 1审核通过 -1审核失败 -2违规下架 + */ + private Integer status; + /** + * 审核失败原因 + */ + private String failMsg; + /** + * 是否热销 + */ + private Integer isHot; + /** + * 计量商品 normal + * 称重商品 weight + * 多规格商品 sku + * 套餐商品 group + * 时价商品 currentPrice + */ + private String typeEnum; + /** + * 是否回收站 0-否,1回收站 + */ + private Integer isDel; + /** + * 是否开启库存 + */ + private Integer isStock; + /** + * 是否暂停销售 + */ + private Integer isPauseSale; + /** + * 是否删除0不删1删除 + */ + private Integer isDelete; private Long createdAt; private Long updatedAt; - - private Double baseSalesNumber; - - private Integer realSalesNumber; - - private Integer salesNumber; - - private Integer thumbCount; - - private Integer storeCount; - - private Integer furnishMeal; - - private Integer furnishExpress; - - private Integer furnishDraw; - - private Integer furnishVir; - - private Byte isCombo; - - private Byte isShowCash; - - private Byte isShowMall; - - private Byte isNeedExamine; - - private Byte showOnMallStatus; - - private Long showOnMallTime; - - private String showOnMallErrorMsg; - - private Byte enableLabel; - - private String taxConfigId; - + /** + * 套餐内容 + */ + private String groupSnap; + /** + * 规格详情 + */ + private String specInfo; + /** + * 已选择的规格 + */ + private String selectSpec; + /** + * 已选规格表格头部 + */ private String specTableHeaders; - + /** + * 团购卷分类,可有多个分类 + */ + private String groupCategoryId; + /** + * 销量 + */ + private Integer realSalesNumber; + /** + * 商品级库存数量 + */ private Integer stockNumber; + /** + * 是否上架 + */ + private Integer isGrounding; + /** + * 退款是否退回库存 + */ + private Integer isRefundStock; + /** + * 库存警戒线 + */ + private Integer warnLine; - private Integer warnLine = 0; - - @Transient - @TableField(exist = false) private int orderCount; - - @Transient - @TableField(exist = false) private TbProductSpec tbProductSpec; - @Transient - @TableField(exist = false) private TbProductSkuResult productSkuResult; + private Object groundingSpecInfo; + private List skuList; + private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProductStockDetail.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProductStockDetail.java index 1328ac2..bdda082 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProductStockDetail.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProductStockDetail.java @@ -12,7 +12,7 @@ public class TbProductStockDetail implements Serializable { private String productName; - private Byte isStock; + private Integer isStock; private String specSnap; @@ -90,11 +90,11 @@ public class TbProductStockDetail implements Serializable { this.productName = productName == null ? null : productName.trim(); } - public Byte getIsStock() { + public Integer getIsStock() { return isStock; } - public void setIsStock(Byte isStock) { + public void setIsStock(Integer isStock) { this.isStock = isStock; } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProductWithBLOBs.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProductWithBLOBs.java deleted file mode 100644 index 3302de2..0000000 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProductWithBLOBs.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.chaozhanggui.system.cashierservice.entity; - -import lombok.Getter; - -import java.io.Serializable; -import java.util.List; - -@Getter -public class TbProductWithBLOBs extends TbProduct implements Serializable { - private Object groundingSpecInfo; - private String images; - - private String video; - - private String notice; - - private String groupSnap; - - private String specInfo; - - private String selectSpec; - - private List skuList; - - private static final long serialVersionUID = 1L; - - public void setGroundingSpecInfo(Object groundingSpecInfo) { - this.groundingSpecInfo = groundingSpecInfo; - } - - public void setSkuList(List skuList) { - this.skuList = skuList; - } - - public void setImages(String images) { - this.images = images == null ? null : images.trim(); - } - - public void setVideo(String video) { - this.video = video == null ? null : video.trim(); - } - - public void setNotice(String notice) { - this.notice = notice == null ? null : notice.trim(); - } - - public void setGroupSnap(String groupSnap) { - this.groupSnap = groupSnap == null ? null : groupSnap.trim(); - } - - public void setSpecInfo(String specInfo) { - this.specInfo = specInfo == null ? null : specInfo.trim(); - } - - public void setSelectSpec(String selectSpec) { - this.selectSpec = selectSpec == null ? null : selectSpec.trim(); - } -} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/ConsMsgConsumer.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/ConsMsgConsumer.java index 80bae3a..ae0f4bc 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/ConsMsgConsumer.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/ConsMsgConsumer.java @@ -108,7 +108,7 @@ public class ConsMsgConsumer { return; } - TbProductWithBLOBs product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(skuWithBLOBs.getProductId())); + TbProduct product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(skuWithBLOBs.getProductId())); if (Objects.isNull(product)) { log.info("商品信息不存在"); return; diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/DutyService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/DutyService.java index c3df527..43ef61f 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/DutyService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/DutyService.java @@ -386,7 +386,7 @@ public class DutyService { if (tbProductSku == null) { return; } - TbProductWithBLOBs product = productMapper.selectByPrimaryKey(Integer.valueOf(tbProductSku.getProductId())); + TbProduct product = productMapper.selectByPrimaryKey(Integer.valueOf(tbProductSku.getProductId())); if (ObjectUtil.isNotEmpty(product)) { 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 5a1e3ca..2588a4c 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -601,7 +601,7 @@ public class OrderService { if (Objects.nonNull(skuWithBLOBs)) { cashierCart.setSkuName(skuWithBLOBs.getSpecSnap()); } - TbProductWithBLOBs tbProduct = tbProductMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getProductId())); + TbProduct tbProduct = tbProductMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getProductId())); if (Objects.nonNull(tbProduct)) { cashierCart.setSelectSpec(tbProduct.getSelectSpec()); if (tbProduct.getSpecId() != null) { @@ -643,7 +643,7 @@ public class OrderService { return Result.success(CodeEnum.SUCCESS, returnCart(dto)); } - TbProductWithBLOBs product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getProductId())); + TbProduct product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getProductId())); if (ObjectUtil.isEmpty(product)) { return Result.fail(CodeEnum.PRODUCTINFOERROR); } @@ -901,7 +901,7 @@ public class OrderService { orderDetail.setPlaceNum(currentPlaceNum); } - TbProductWithBLOBs product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getProductId())); + TbProduct product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getProductId())); if ("takeaway".equals(orderVo.getSendType()) || "takeself".equals(orderVo.getSendType())) { if (Objects.nonNull(product.getPackFee())) { packAMount = packAMount.add(product.getPackFee()); @@ -1269,7 +1269,7 @@ public class OrderService { } List list = cashierCartMapper.selectAllByMarketId(day, String.valueOf(cartVo.getShopId()), cartVo.getMasterId()); for (TbCashierCart cashierCart : list) { - TbProductWithBLOBs product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getProductId())); + TbProduct product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getProductId())); if ("true".equals(cartVo.getStatus())) { cashierCart.setTotalAmount(new BigDecimal(cashierCart.getTotalNumber()).multiply(cashierCart.getSalePrice().add(product.getPackFee()))); cashierCart.setPackFee(new BigDecimal(cashierCart.getTotalNumber()).multiply(product.getPackFee())); 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 8dffbe3..cededc7 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java @@ -1424,7 +1424,7 @@ public class PayService { detail = tbOrderDetailMapper.selectByPrimaryKey(detail.getId()); TbProductSku productSku = productSkuMapper.selectByPrimaryKey(detail.getProductSkuId()); - TbProductWithBLOBs product = productMapper.selectByPrimaryKey(detail.getProductId()); + TbProduct product = productMapper.selectByPrimaryKey(detail.getProductId()); TbProductStockDetail tbProductStockDetail = new TbProductStockDetail(); tbProductStockDetail.setCreatedAt(System.currentTimeMillis()); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java index eaede9b..d7669b8 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java @@ -71,16 +71,16 @@ public class ProductService { public Result queryCommodityInfo(String shopId, String categoryId, String commdityName, Integer page, Integer pageSize, String masterId){ - List tbProductWithBLOBs=null; + List TbProduct=null; if(ObjectUtil.isEmpty(categoryId)){ - tbProductWithBLOBs=tbProductMapper.selectByShopId(shopId,commdityName); + TbProduct=tbProductMapper.selectByShopId(shopId,commdityName); }else { - tbProductWithBLOBs=tbProductMapper.selectByShopIdAndShopType(shopId,categoryId,commdityName); + TbProduct=tbProductMapper.selectByShopIdAndShopType(shopId,categoryId,commdityName); } String day = DateUtils.getDay(); - if(ObjectUtil.isNotEmpty(tbProductWithBLOBs)){ - tbProductWithBLOBs.parallelStream().forEach(it->{ + if(ObjectUtil.isNotEmpty(TbProduct)){ + TbProduct.parallelStream().forEach(it->{ Integer orderCount=tbProductMapper.countOrderByshopIdAndProductId(it.getShopId(),it.getId().toString(),masterId,day, ""); it.setOrderCount((ObjectUtil.isNull(orderCount)||ObjectUtil.isEmpty(orderCount))?0:orderCount); TbProductSpec tbProductSpec= tbProductSpecMapper.selectByPrimaryKey(it.getSpecId()); @@ -96,7 +96,7 @@ public class ProductService { it.setProductSkuResult(skuResult); }); } - return Result.success(CodeEnum.SUCCESS,tbProductWithBLOBs); + return Result.success(CodeEnum.SUCCESS,TbProduct); } @@ -111,21 +111,21 @@ public class ProductService { } public Result queryNewCommodityInfo(String shopId, String categoryId, String commdityName, String tableId, int page, int pageSize, String masterId) { - List tbProductWithBLOBs=null; + List tbProducts=null; PageHelperUtil.startPage(page,pageSize); if(ObjectUtil.isEmpty(categoryId)){ - tbProductWithBLOBs=tbProductMapper.selectByShopIdAndCheckGrounding(shopId,commdityName); + tbProducts=tbProductMapper.selectByShopIdAndCheckGrounding(shopId,commdityName); }else { if (Integer.valueOf(categoryId).equals(-1)) { - tbProductWithBLOBs = tbProductMapper.selectByShopIdAndShopTypeUnGrounding(shopId,commdityName); + tbProducts = tbProductMapper.selectByShopIdAndShopTypeUnGrounding(shopId,commdityName); }else { - tbProductWithBLOBs=tbProductMapper.selectByShopIdAndShopTypeCheckGrounding(shopId,categoryId,commdityName); + tbProducts=tbProductMapper.selectByShopIdAndShopTypeCheckGrounding(shopId,categoryId,commdityName); } } String day = DateUtils.getDay(); - if(ObjectUtil.isNotEmpty(tbProductWithBLOBs)){ - tbProductWithBLOBs.parallelStream().forEach(it->{ + if(ObjectUtil.isNotEmpty(tbProducts)){ + tbProducts.parallelStream().forEach(it->{ Integer orderCount=tbProductMapper.countOrderByshopIdAndProductId(it.getShopId(),it.getId().toString(),masterId,day, tableId); it.setOrderCount((ObjectUtil.isNull(orderCount)||ObjectUtil.isEmpty(orderCount))?0:orderCount); TbProductSpec tbProductSpec= tbProductSpecMapper.selectByPrimaryKey(it.getSpecId()); @@ -143,7 +143,7 @@ public class ProductService { it.setGroundingSpecInfo(querySpec(Integer.valueOf(shopId), it.getId())); }); } - PageInfo pageInfo=new PageInfo(tbProductWithBLOBs); + PageInfo pageInfo=new PageInfo(tbProducts); return Result.success(CodeEnum.SUCCESS,pageInfo); } @@ -152,7 +152,7 @@ public class ProductService { } public void decrStock(String productId, String skuId, int decrNum) { - TbProductWithBLOBs product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(productId)); + TbProduct product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(productId)); if (product.getIsStock() == 1) { if (tbProductMapper.decrStock(productId, decrNum) < 1) { throw new MsgException("库存不足,下单失败"); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/TbGroupOrderInfoService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/TbGroupOrderInfoService.java index 742a52a..06d2d7b 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/TbGroupOrderInfoService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/TbGroupOrderInfoService.java @@ -50,7 +50,7 @@ public class TbGroupOrderInfoService { */ public Result queryById(Integer id) { TbGroupOrderInfo tbGroupOrderInfo = tbGroupOrderInfoMapper.queryById(id); - TbProductWithBLOBs tbProduct = productMapper.selectByPrimaryKey(tbGroupOrderInfo.getProId()); + TbProduct tbProduct = productMapper.selectByPrimaryKey(tbGroupOrderInfo.getProId()); TbProductSkuWithBLOBs tbProductSku = skuMapper.selectByProduct(tbGroupOrderInfo.getProId()); GroupOrderInfoVo productInfo = new GroupOrderInfoVo(); diff --git a/src/main/resources/mapper/TbProductMapper.xml b/src/main/resources/mapper/TbProductMapper.xml index 709b345..1a749ad 100644 --- a/src/main/resources/mapper/TbProductMapper.xml +++ b/src/main/resources/mapper/TbProductMapper.xml @@ -1,913 +1,55 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - id, category_id, spec_id, source_path, brand_id, merchant_id, shop_id, name, short_title, - type, pack_fee, low_price, low_member_price, unit_id, unit_snap, cover_img, share_img, - video_cover_img, sort, limit_number, product_score, status, fail_msg, is_recommend, - is_hot, is_new, is_on_sale, is_show, type_enum, is_distribute, is_del, is_stock, - is_pause_sale, is_free_freight, freight_id, strategy_type, strategy_id, is_vip, is_delete, - created_at, updated_at, base_sales_number, real_sales_number, sales_number, thumb_count, - store_count, furnish_meal, furnish_express, furnish_draw, furnish_vir, is_combo, - is_show_cash, is_show_mall, is_need_examine, show_on_mall_status, show_on_mall_time, - show_on_mall_error_msg, enable_label, tax_config_id, spec_table_headers, stock_number,warn_line - - - images, video, notice, group_snap, spec_info, select_spec - - select - , - from tb_product where id = #{id,jdbcType=INTEGER} - - delete from tb_product - where id = #{id,jdbcType=INTEGER} - - - insert into tb_product (id, category_id, spec_id, - source_path, brand_id, merchant_id, - shop_id, name, short_title, - type, pack_fee, low_price, - low_member_price, unit_id, unit_snap, - cover_img, share_img, video_cover_img, - sort, limit_number, product_score, - status, fail_msg, is_recommend, - is_hot, is_new, is_on_sale, - is_show, type_enum, is_distribute, - is_del, is_stock, is_pause_sale, - is_free_freight, freight_id, strategy_type, - strategy_id, is_vip, is_delete, - created_at, updated_at, base_sales_number, - real_sales_number, sales_number, thumb_count, - store_count, furnish_meal, furnish_express, - furnish_draw, furnish_vir, is_combo, - is_show_cash, is_show_mall, is_need_examine, - show_on_mall_status, show_on_mall_time, show_on_mall_error_msg, - enable_label, tax_config_id, spec_table_headers, - images, video, notice, - group_snap, spec_info, select_spec, stock_number,warn_line - ) - values (#{id,jdbcType=INTEGER}, #{categoryId,jdbcType=VARCHAR}, #{specId,jdbcType=INTEGER}, - #{sourcePath,jdbcType=VARCHAR}, #{brandId,jdbcType=INTEGER}, #{merchantId,jdbcType=VARCHAR}, - #{shopId,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{shortTitle,jdbcType=VARCHAR}, - #{type,jdbcType=VARCHAR}, #{packFee,jdbcType=DECIMAL}, #{lowPrice,jdbcType=DECIMAL}, - #{lowMemberPrice,jdbcType=DECIMAL}, #{unitId,jdbcType=VARCHAR}, #{unitSnap,jdbcType=VARCHAR}, - #{coverImg,jdbcType=VARCHAR}, #{shareImg,jdbcType=VARCHAR}, #{videoCoverImg,jdbcType=VARCHAR}, - #{sort,jdbcType=INTEGER}, #{limitNumber,jdbcType=INTEGER}, #{productScore,jdbcType=INTEGER}, - #{status,jdbcType=TINYINT}, #{failMsg,jdbcType=VARCHAR}, #{isRecommend,jdbcType=TINYINT}, - #{isHot,jdbcType=TINYINT}, #{isNew,jdbcType=TINYINT}, #{isOnSale,jdbcType=TINYINT}, - #{isShow,jdbcType=TINYINT}, #{typeEnum,jdbcType=VARCHAR}, #{isDistribute,jdbcType=TINYINT}, - #{isDel,jdbcType=TINYINT}, #{isStock,jdbcType=TINYINT}, #{isPauseSale,jdbcType=TINYINT}, - #{isFreeFreight,jdbcType=TINYINT}, #{freightId,jdbcType=BIGINT}, #{strategyType,jdbcType=VARCHAR}, - #{strategyId,jdbcType=INTEGER}, #{isVip,jdbcType=TINYINT}, #{isDelete,jdbcType=TINYINT}, - #{createdAt,jdbcType=BIGINT}, #{updatedAt,jdbcType=BIGINT}, #{baseSalesNumber,jdbcType=DOUBLE}, - #{realSalesNumber,jdbcType=INTEGER}, #{salesNumber,jdbcType=INTEGER}, #{thumbCount,jdbcType=INTEGER}, - #{storeCount,jdbcType=INTEGER}, #{furnishMeal,jdbcType=INTEGER}, #{furnishExpress,jdbcType=INTEGER}, - #{furnishDraw,jdbcType=INTEGER}, #{furnishVir,jdbcType=INTEGER}, #{isCombo,jdbcType=TINYINT}, - #{isShowCash,jdbcType=TINYINT}, #{isShowMall,jdbcType=TINYINT}, #{isNeedExamine,jdbcType=TINYINT}, - #{showOnMallStatus,jdbcType=TINYINT}, #{showOnMallTime,jdbcType=BIGINT}, #{showOnMallErrorMsg,jdbcType=VARCHAR}, - #{enableLabel,jdbcType=TINYINT}, #{taxConfigId,jdbcType=VARCHAR}, #{specTableHeaders,jdbcType=VARCHAR}, - #{images,jdbcType=LONGVARCHAR}, #{video,jdbcType=LONGVARCHAR}, #{notice,jdbcType=LONGVARCHAR}, - #{groupSnap,jdbcType=LONGVARCHAR}, #{specInfo,jdbcType=LONGVARCHAR}, #{selectSpec,jdbcType=LONGVARCHAR}, - #{stockNumber,jdbcType=INTEGER},#{warnLine,jdbcType=INTEGER} - ) - - - insert into tb_product - - - id, - - - category_id, - - - spec_id, - - - source_path, - - - brand_id, - - - merchant_id, - - - shop_id, - - - name, - - - short_title, - - - type, - - - pack_fee, - - - low_price, - - - low_member_price, - - - unit_id, - - - unit_snap, - - - cover_img, - - - share_img, - - - video_cover_img, - - - sort, - - - limit_number, - - - product_score, - - - status, - - - fail_msg, - - - is_recommend, - - - is_hot, - - - is_new, - - - is_on_sale, - - - is_show, - - - type_enum, - - - is_distribute, - - - is_del, - - - is_stock, - - - is_pause_sale, - - - is_free_freight, - - - freight_id, - - - strategy_type, - - - strategy_id, - - - is_vip, - - - is_delete, - - - created_at, - - - updated_at, - - - base_sales_number, - - - real_sales_number, - - - sales_number, - - - thumb_count, - - - store_count, - - - furnish_meal, - - - furnish_express, - - - furnish_draw, - - - furnish_vir, - - - is_combo, - - - is_show_cash, - - - is_show_mall, - - - is_need_examine, - - - show_on_mall_status, - - - show_on_mall_time, - - - show_on_mall_error_msg, - - - enable_label, - - - tax_config_id, - - - spec_table_headers, - - - images, - - - video, - - - notice, - - - group_snap, - - - spec_info, - - - select_spec, - - - stock_number, - - - warn_line, - - - - - #{id,jdbcType=INTEGER}, - - - #{categoryId,jdbcType=VARCHAR}, - - - #{specId,jdbcType=INTEGER}, - - - #{sourcePath,jdbcType=VARCHAR}, - - - #{brandId,jdbcType=INTEGER}, - - - #{merchantId,jdbcType=VARCHAR}, - - - #{shopId,jdbcType=VARCHAR}, - - - #{name,jdbcType=VARCHAR}, - - - #{shortTitle,jdbcType=VARCHAR}, - - - #{type,jdbcType=VARCHAR}, - - - #{packFee,jdbcType=DECIMAL}, - - - #{lowPrice,jdbcType=DECIMAL}, - - - #{lowMemberPrice,jdbcType=DECIMAL}, - - - #{unitId,jdbcType=VARCHAR}, - - - #{unitSnap,jdbcType=VARCHAR}, - - - #{coverImg,jdbcType=VARCHAR}, - - - #{shareImg,jdbcType=VARCHAR}, - - - #{videoCoverImg,jdbcType=VARCHAR}, - - - #{sort,jdbcType=INTEGER}, - - - #{limitNumber,jdbcType=INTEGER}, - - - #{productScore,jdbcType=INTEGER}, - - - #{status,jdbcType=TINYINT}, - - - #{failMsg,jdbcType=VARCHAR}, - - - #{isRecommend,jdbcType=TINYINT}, - - - #{isHot,jdbcType=TINYINT}, - - - #{isNew,jdbcType=TINYINT}, - - - #{isOnSale,jdbcType=TINYINT}, - - - #{isShow,jdbcType=TINYINT}, - - - #{typeEnum,jdbcType=VARCHAR}, - - - #{isDistribute,jdbcType=TINYINT}, - - - #{isDel,jdbcType=TINYINT}, - - - #{isStock,jdbcType=TINYINT}, - - - #{isPauseSale,jdbcType=TINYINT}, - - - #{isFreeFreight,jdbcType=TINYINT}, - - - #{freightId,jdbcType=BIGINT}, - - - #{strategyType,jdbcType=VARCHAR}, - - - #{strategyId,jdbcType=INTEGER}, - - - #{isVip,jdbcType=TINYINT}, - - - #{isDelete,jdbcType=TINYINT}, - - - #{createdAt,jdbcType=BIGINT}, - - - #{updatedAt,jdbcType=BIGINT}, - - - #{baseSalesNumber,jdbcType=DOUBLE}, - - - #{realSalesNumber,jdbcType=INTEGER}, - - - #{salesNumber,jdbcType=INTEGER}, - - - #{thumbCount,jdbcType=INTEGER}, - - - #{storeCount,jdbcType=INTEGER}, - - - #{furnishMeal,jdbcType=INTEGER}, - - - #{furnishExpress,jdbcType=INTEGER}, - - - #{furnishDraw,jdbcType=INTEGER}, - - - #{furnishVir,jdbcType=INTEGER}, - - - #{isCombo,jdbcType=TINYINT}, - - - #{isShowCash,jdbcType=TINYINT}, - - - #{isShowMall,jdbcType=TINYINT}, - - - #{isNeedExamine,jdbcType=TINYINT}, - - - #{showOnMallStatus,jdbcType=TINYINT}, - - - #{showOnMallTime,jdbcType=BIGINT}, - - - #{showOnMallErrorMsg,jdbcType=VARCHAR}, - - - #{enableLabel,jdbcType=TINYINT}, - - - #{taxConfigId,jdbcType=VARCHAR}, - - - #{specTableHeaders,jdbcType=VARCHAR}, - - - #{images,jdbcType=LONGVARCHAR}, - - - #{video,jdbcType=LONGVARCHAR}, - - - #{notice,jdbcType=LONGVARCHAR}, - - - #{groupSnap,jdbcType=LONGVARCHAR}, - - - #{specInfo,jdbcType=LONGVARCHAR}, - - - #{selectSpec,jdbcType=LONGVARCHAR}, - - - #{stockNumber,jdbcType=INTEGER}, - - - #{warnLine,jdbcType=INTEGER}, - - - - - update tb_product - - - category_id = #{categoryId,jdbcType=VARCHAR}, - - - spec_id = #{specId,jdbcType=INTEGER}, - - - source_path = #{sourcePath,jdbcType=VARCHAR}, - - - brand_id = #{brandId,jdbcType=INTEGER}, - - - merchant_id = #{merchantId,jdbcType=VARCHAR}, - - - shop_id = #{shopId,jdbcType=VARCHAR}, - - - name = #{name,jdbcType=VARCHAR}, - - - short_title = #{shortTitle,jdbcType=VARCHAR}, - - - type = #{type,jdbcType=VARCHAR}, - - - pack_fee = #{packFee,jdbcType=DECIMAL}, - - - low_price = #{lowPrice,jdbcType=DECIMAL}, - - - low_member_price = #{lowMemberPrice,jdbcType=DECIMAL}, - - - unit_id = #{unitId,jdbcType=VARCHAR}, - - - unit_snap = #{unitSnap,jdbcType=VARCHAR}, - - - cover_img = #{coverImg,jdbcType=VARCHAR}, - - - share_img = #{shareImg,jdbcType=VARCHAR}, - - - video_cover_img = #{videoCoverImg,jdbcType=VARCHAR}, - - - sort = #{sort,jdbcType=INTEGER}, - - - limit_number = #{limitNumber,jdbcType=INTEGER}, - - - product_score = #{productScore,jdbcType=INTEGER}, - - - status = #{status,jdbcType=TINYINT}, - - - fail_msg = #{failMsg,jdbcType=VARCHAR}, - - - is_recommend = #{isRecommend,jdbcType=TINYINT}, - - - is_hot = #{isHot,jdbcType=TINYINT}, - - - is_new = #{isNew,jdbcType=TINYINT}, - - - is_on_sale = #{isOnSale,jdbcType=TINYINT}, - - - is_show = #{isShow,jdbcType=TINYINT}, - - - type_enum = #{typeEnum,jdbcType=VARCHAR}, - - - is_distribute = #{isDistribute,jdbcType=TINYINT}, - - - is_del = #{isDel,jdbcType=TINYINT}, - - - is_stock = #{isStock,jdbcType=TINYINT}, - - - is_pause_sale = #{isPauseSale,jdbcType=TINYINT}, - - - is_free_freight = #{isFreeFreight,jdbcType=TINYINT}, - - - freight_id = #{freightId,jdbcType=BIGINT}, - - - strategy_type = #{strategyType,jdbcType=VARCHAR}, - - - strategy_id = #{strategyId,jdbcType=INTEGER}, - - - is_vip = #{isVip,jdbcType=TINYINT}, - - - is_delete = #{isDelete,jdbcType=TINYINT}, - - - created_at = #{createdAt,jdbcType=BIGINT}, - - - updated_at = #{updatedAt,jdbcType=BIGINT}, - - - base_sales_number = #{baseSalesNumber,jdbcType=DOUBLE}, - - - real_sales_number = #{realSalesNumber,jdbcType=INTEGER}, - - - sales_number = #{salesNumber,jdbcType=INTEGER}, - - - thumb_count = #{thumbCount,jdbcType=INTEGER}, - - - store_count = #{storeCount,jdbcType=INTEGER}, - - - furnish_meal = #{furnishMeal,jdbcType=INTEGER}, - - - furnish_express = #{furnishExpress,jdbcType=INTEGER}, - - - furnish_draw = #{furnishDraw,jdbcType=INTEGER}, - - - furnish_vir = #{furnishVir,jdbcType=INTEGER}, - - - is_combo = #{isCombo,jdbcType=TINYINT}, - - - is_show_cash = #{isShowCash,jdbcType=TINYINT}, - - - is_show_mall = #{isShowMall,jdbcType=TINYINT}, - - - is_need_examine = #{isNeedExamine,jdbcType=TINYINT}, - - - show_on_mall_status = #{showOnMallStatus,jdbcType=TINYINT}, - - - show_on_mall_time = #{showOnMallTime,jdbcType=BIGINT}, - - - show_on_mall_error_msg = #{showOnMallErrorMsg,jdbcType=VARCHAR}, - - - enable_label = #{enableLabel,jdbcType=TINYINT}, - - - tax_config_id = #{taxConfigId,jdbcType=VARCHAR}, - - - spec_table_headers = #{specTableHeaders,jdbcType=VARCHAR}, - - - images = #{images,jdbcType=LONGVARCHAR}, - - - video = #{video,jdbcType=LONGVARCHAR}, - - - notice = #{notice,jdbcType=LONGVARCHAR}, - - - group_snap = #{groupSnap,jdbcType=LONGVARCHAR}, - - - spec_info = #{specInfo,jdbcType=LONGVARCHAR}, - - - select_spec = #{selectSpec,jdbcType=LONGVARCHAR}, - - - stock_number = #{stockNumber,jdbcType=INTEGER}, - - - warn_line = #{warnLine,jdbcType=INTEGER}, - - - where id = #{id,jdbcType=INTEGER} - - - update tb_product - set category_id = #{categoryId,jdbcType=VARCHAR}, - spec_id = #{specId,jdbcType=INTEGER}, - source_path = #{sourcePath,jdbcType=VARCHAR}, - brand_id = #{brandId,jdbcType=INTEGER}, - merchant_id = #{merchantId,jdbcType=VARCHAR}, - shop_id = #{shopId,jdbcType=VARCHAR}, - name = #{name,jdbcType=VARCHAR}, - short_title = #{shortTitle,jdbcType=VARCHAR}, - type = #{type,jdbcType=VARCHAR}, - pack_fee = #{packFee,jdbcType=DECIMAL}, - low_price = #{lowPrice,jdbcType=DECIMAL}, - low_member_price = #{lowMemberPrice,jdbcType=DECIMAL}, - unit_id = #{unitId,jdbcType=VARCHAR}, - unit_snap = #{unitSnap,jdbcType=VARCHAR}, - cover_img = #{coverImg,jdbcType=VARCHAR}, - share_img = #{shareImg,jdbcType=VARCHAR}, - video_cover_img = #{videoCoverImg,jdbcType=VARCHAR}, - sort = #{sort,jdbcType=INTEGER}, - limit_number = #{limitNumber,jdbcType=INTEGER}, - product_score = #{productScore,jdbcType=INTEGER}, - status = #{status,jdbcType=TINYINT}, - fail_msg = #{failMsg,jdbcType=VARCHAR}, - is_recommend = #{isRecommend,jdbcType=TINYINT}, - is_hot = #{isHot,jdbcType=TINYINT}, - is_new = #{isNew,jdbcType=TINYINT}, - is_on_sale = #{isOnSale,jdbcType=TINYINT}, - is_show = #{isShow,jdbcType=TINYINT}, - type_enum = #{typeEnum,jdbcType=VARCHAR}, - is_distribute = #{isDistribute,jdbcType=TINYINT}, - is_del = #{isDel,jdbcType=TINYINT}, - is_stock = #{isStock,jdbcType=TINYINT}, - is_pause_sale = #{isPauseSale,jdbcType=TINYINT}, - is_free_freight = #{isFreeFreight,jdbcType=TINYINT}, - freight_id = #{freightId,jdbcType=BIGINT}, - strategy_type = #{strategyType,jdbcType=VARCHAR}, - strategy_id = #{strategyId,jdbcType=INTEGER}, - is_vip = #{isVip,jdbcType=TINYINT}, - is_delete = #{isDelete,jdbcType=TINYINT}, - created_at = #{createdAt,jdbcType=BIGINT}, - updated_at = #{updatedAt,jdbcType=BIGINT}, - base_sales_number = #{baseSalesNumber,jdbcType=DOUBLE}, - real_sales_number = #{realSalesNumber,jdbcType=INTEGER}, - sales_number = #{salesNumber,jdbcType=INTEGER}, - thumb_count = #{thumbCount,jdbcType=INTEGER}, - store_count = #{storeCount,jdbcType=INTEGER}, - furnish_meal = #{furnishMeal,jdbcType=INTEGER}, - furnish_express = #{furnishExpress,jdbcType=INTEGER}, - furnish_draw = #{furnishDraw,jdbcType=INTEGER}, - furnish_vir = #{furnishVir,jdbcType=INTEGER}, - is_combo = #{isCombo,jdbcType=TINYINT}, - is_show_cash = #{isShowCash,jdbcType=TINYINT}, - is_show_mall = #{isShowMall,jdbcType=TINYINT}, - is_need_examine = #{isNeedExamine,jdbcType=TINYINT}, - show_on_mall_status = #{showOnMallStatus,jdbcType=TINYINT}, - show_on_mall_time = #{showOnMallTime,jdbcType=BIGINT}, - show_on_mall_error_msg = #{showOnMallErrorMsg,jdbcType=VARCHAR}, - enable_label = #{enableLabel,jdbcType=TINYINT}, - tax_config_id = #{taxConfigId,jdbcType=VARCHAR}, - spec_table_headers = #{specTableHeaders,jdbcType=VARCHAR}, - images = #{images,jdbcType=LONGVARCHAR}, - video = #{video,jdbcType=LONGVARCHAR}, - notice = #{notice,jdbcType=LONGVARCHAR}, - group_snap = #{groupSnap,jdbcType=LONGVARCHAR}, - spec_info = #{specInfo,jdbcType=LONGVARCHAR}, - select_spec = #{selectSpec,jdbcType=LONGVARCHAR}, - stock_number = #{stockNumber,jdbcType=INTEGER}, - warn_line = #{warnLine,jdbcType=INTEGER} - where id = #{id,jdbcType=INTEGER} - - - update tb_product - set category_id = #{categoryId,jdbcType=VARCHAR}, - spec_id = #{specId,jdbcType=INTEGER}, - source_path = #{sourcePath,jdbcType=VARCHAR}, - brand_id = #{brandId,jdbcType=INTEGER}, - merchant_id = #{merchantId,jdbcType=VARCHAR}, - shop_id = #{shopId,jdbcType=VARCHAR}, - name = #{name,jdbcType=VARCHAR}, - short_title = #{shortTitle,jdbcType=VARCHAR}, - type = #{type,jdbcType=VARCHAR}, - pack_fee = #{packFee,jdbcType=DECIMAL}, - low_price = #{lowPrice,jdbcType=DECIMAL}, - low_member_price = #{lowMemberPrice,jdbcType=DECIMAL}, - unit_id = #{unitId,jdbcType=VARCHAR}, - unit_snap = #{unitSnap,jdbcType=VARCHAR}, - cover_img = #{coverImg,jdbcType=VARCHAR}, - share_img = #{shareImg,jdbcType=VARCHAR}, - video_cover_img = #{videoCoverImg,jdbcType=VARCHAR}, - sort = #{sort,jdbcType=INTEGER}, - limit_number = #{limitNumber,jdbcType=INTEGER}, - product_score = #{productScore,jdbcType=INTEGER}, - status = #{status,jdbcType=TINYINT}, - fail_msg = #{failMsg,jdbcType=VARCHAR}, - is_recommend = #{isRecommend,jdbcType=TINYINT}, - is_hot = #{isHot,jdbcType=TINYINT}, - is_new = #{isNew,jdbcType=TINYINT}, - is_on_sale = #{isOnSale,jdbcType=TINYINT}, - is_show = #{isShow,jdbcType=TINYINT}, - type_enum = #{typeEnum,jdbcType=VARCHAR}, - is_distribute = #{isDistribute,jdbcType=TINYINT}, - is_del = #{isDel,jdbcType=TINYINT}, - is_stock = #{isStock,jdbcType=TINYINT}, - is_pause_sale = #{isPauseSale,jdbcType=TINYINT}, - is_free_freight = #{isFreeFreight,jdbcType=TINYINT}, - freight_id = #{freightId,jdbcType=BIGINT}, - strategy_type = #{strategyType,jdbcType=VARCHAR}, - strategy_id = #{strategyId,jdbcType=INTEGER}, - is_vip = #{isVip,jdbcType=TINYINT}, - is_delete = #{isDelete,jdbcType=TINYINT}, - created_at = #{createdAt,jdbcType=BIGINT}, - updated_at = #{updatedAt,jdbcType=BIGINT}, - base_sales_number = #{baseSalesNumber,jdbcType=DOUBLE}, - real_sales_number = #{realSalesNumber,jdbcType=INTEGER}, - sales_number = #{salesNumber,jdbcType=INTEGER}, - thumb_count = #{thumbCount,jdbcType=INTEGER}, - store_count = #{storeCount,jdbcType=INTEGER}, - furnish_meal = #{furnishMeal,jdbcType=INTEGER}, - furnish_express = #{furnishExpress,jdbcType=INTEGER}, - furnish_draw = #{furnishDraw,jdbcType=INTEGER}, - furnish_vir = #{furnishVir,jdbcType=INTEGER}, - is_combo = #{isCombo,jdbcType=TINYINT}, - is_show_cash = #{isShowCash,jdbcType=TINYINT}, - is_show_mall = #{isShowMall,jdbcType=TINYINT}, - is_need_examine = #{isNeedExamine,jdbcType=TINYINT}, - show_on_mall_status = #{showOnMallStatus,jdbcType=TINYINT}, - show_on_mall_time = #{showOnMallTime,jdbcType=BIGINT}, - show_on_mall_error_msg = #{showOnMallErrorMsg,jdbcType=VARCHAR}, - enable_label = #{enableLabel,jdbcType=TINYINT}, - tax_config_id = #{taxConfigId,jdbcType=VARCHAR}, - spec_table_headers = #{specTableHeaders,jdbcType=VARCHAR}, - stock_number = #{stockNumber,jdbcType=INTEGER}, - warn_line = #{warnLine,jdbcType=INTEGER} - where id = #{id,jdbcType=INTEGER} - - select * from tb_product where shop_id=#{shopId} and status=1 and is_show_cash = 1 and type_enum in ('normal','sku','currentPrice','weight') and name like CONCAT('%',#{commdityName},'%') @@ -915,7 +57,7 @@ order by `sort` asc - select a.* from tb_product as a left join tb_product_sku as b on a.id = b.product_id where a.shop_id=#{shopId} and a.status=1 and a.is_show_cash = 1 and a.type_enum in ('normal','sku','currentPrice','weight') @@ -927,7 +69,7 @@ - select * from tb_product where shop_id=#{shopId} and status=1 and category_id=#{categoryId} and is_show_cash = 1 and type_enum in ('normal','sku','currentPrice','weight') @@ -939,7 +81,7 @@ - select a.* from tb_product as a left join tb_product_sku as b on a.id = b.product_id @@ -951,7 +93,7 @@ and b.is_grounding=1 GROUP BY a.id ORDER BY a.`sort` - select a.* from tb_product as a left join tb_product_sku as b on a.id = b.product_id @@ -979,12 +121,6 @@ group by shop_id,product_id - - update tb_product - set stock_number = stock_number - #{num,jdbcType=INTEGER} - where id = #{productId} - - select a.* from tb_product as a left join tb_product_sku as b on a.id = b.product_id - where a.shop_id=#{shopId} and a.status=1 and a.is_show_cash = 1 and a.type_enum in ('normal','sku','currentPrice','weight') + where a.shop_id=#{shopId} and a.status=1 and a.is_del = 0 and a.is_grounding = 1 and a.type_enum in ('normal','sku','currentPrice','weight') and a.name like CONCAT('%',#{commdityName},'%') @@ -71,7 +70,7 @@ select @@ -49,28 +63,30 @@ + + + + + From 1157d4eb16b212ce3c71098cc5605e7cf621b6f2 Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Tue, 19 Nov 2024 16:47:05 +0800 Subject: [PATCH 06/77] =?UTF-8?q?=E5=95=86=E5=93=81=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashierservice/entity/TbProduct.java | 2 ++ .../entity/vo/ProductGroupVo.java | 34 +++++++++++++++++++ .../service/ProductService.java | 6 ++++ 3 files changed, 42 insertions(+) create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/ProductGroupVo.java diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProduct.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProduct.java index 2d38cb3..42ea321 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProduct.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProduct.java @@ -1,5 +1,6 @@ package com.chaozhanggui.system.cashierservice.entity; +import com.chaozhanggui.system.cashierservice.entity.vo.ProductGroupVo; import lombok.Data; import java.math.BigDecimal; import java.time.LocalTime; @@ -185,5 +186,6 @@ public class TbProduct implements Serializable { private Object groundingSpecInfo; private List skuList; + private List proGroupVo; } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/ProductGroupVo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/ProductGroupVo.java new file mode 100644 index 0000000..61d7a28 --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/ProductGroupVo.java @@ -0,0 +1,34 @@ +package com.chaozhanggui.system.cashierservice.entity.vo; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +@Data +@JsonIgnoreProperties(ignoreUnknown = true) +public class ProductGroupVo { + + private Integer count; + //选几个 + private Integer number; + //类别 + private String title; + + //食物 + private List goods=new ArrayList<>(); + + @Data + @JsonIgnoreProperties(ignoreUnknown = true) + public static class Food { + private Integer proId; + private String proName; + private Integer skuId; + private String skuName; + private BigDecimal price; + private String number; + private String unitName; + } +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java index 9fc02b9..797734b 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java @@ -10,6 +10,8 @@ import com.chaozhanggui.system.cashierservice.entity.*; import com.chaozhanggui.system.cashierservice.entity.dto.ProductStatusDTO; import com.chaozhanggui.system.cashierservice.entity.dto.ProductStockDTO; import com.chaozhanggui.system.cashierservice.entity.dto.QuerySpecDTO; +import com.chaozhanggui.system.cashierservice.entity.vo.ProductGroupVo; +import com.chaozhanggui.system.cashierservice.entity.vo.ProductVo; import com.chaozhanggui.system.cashierservice.entity.vo.ShopCategoryVo; import com.chaozhanggui.system.cashierservice.exception.MsgException; import com.chaozhanggui.system.cashierservice.interceptor.LimitSubmitAspect; @@ -17,6 +19,7 @@ import com.chaozhanggui.system.cashierservice.rabbit.RabbitProducer; import com.chaozhanggui.system.cashierservice.sign.CodeEnum; import com.chaozhanggui.system.cashierservice.sign.Result; import com.chaozhanggui.system.cashierservice.util.DateUtils; +import com.chaozhanggui.system.cashierservice.util.JSONUtil; import com.chaozhanggui.system.cashierservice.util.PageHelperUtil; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; @@ -126,6 +129,9 @@ public class ProductService { String day = DateUtils.getDay(); if(ObjectUtil.isNotEmpty(tbProducts)){ tbProducts.parallelStream().forEach(it->{ + if("package".equals(it.getType())){ + it.setProGroupVo(JSONUtil.parseListTNewList(it.getGroupSnap(), ProductGroupVo.class)); + } Integer orderCount=tbProductMapper.countOrderByshopIdAndProductId(it.getShopId(),it.getId().toString(),masterId,day, tableId); it.setOrderCount((ObjectUtil.isNull(orderCount)||ObjectUtil.isEmpty(orderCount))?0:orderCount); TbProductSpec tbProductSpec= tbProductSpecMapper.selectByPrimaryKey(it.getSpecId()); From 2b58a6f0ba0ddae1720f1f00efe3cd83f22a3184 Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Wed, 20 Nov 2024 14:32:18 +0800 Subject: [PATCH 07/77] =?UTF-8?q?=E4=BC=98=E6=83=A0=E5=88=B8=E5=8F=91?= =?UTF-8?q?=E6=94=BE=20=E5=88=9D=E5=A7=8B=E5=8C=96=E6=96=B0=E5=BB=BA?= =?UTF-8?q?=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/mapper/TbActivateInRecordMapper.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/mapper/TbActivateInRecordMapper.xml b/src/main/resources/mapper/TbActivateInRecordMapper.xml index 8e742aa..cce9f16 100644 --- a/src/main/resources/mapper/TbActivateInRecordMapper.xml +++ b/src/main/resources/mapper/TbActivateInRecordMapper.xml @@ -111,7 +111,7 @@ over_num, shop_id, source_act_id, source_flow_id, use_start_time, use_end_time, create_time, update_time, coupon_json, source) values (#{vipUserId}, #{couponId}, #{name}, #{type}, #{proId}, #{fullAmount}, #{discountAmount}, #{num}, - #{overNum}, #{shopId}, #{sourceActId}, #{sourceFlowId}, #{useStartTime}, #{useEndTime}, #{createTime}, + #{overNum}, #{shopId}, #{sourceActId}, #{sourceFlowId}, #{useStartTime}, #{useEndTime}, now(), #{updateTime}, #{couponJson}, #{source}) @@ -124,7 +124,7 @@ (#{entity.vipUserId}, #{entity.couponId}, #{entity.name}, #{entity.type}, #{entity.proId}, #{entity.fullAmount}, #{entity.discountAmount}, #{entity.num}, #{entity.overNum}, #{entity.shopId}, #{entity.sourceActId}, #{entity.sourceFlowId}, #{entity.useStartTime}, #{entity.useEndTime}, - #{entity.createTime}, #{entity.updateTime}, #{entity.couponJson},#{entity.source}) + now(), #{entity.updateTime}, #{entity.couponJson},#{entity.source}) From 43c51fff6eb7ac9918e407cf9b1aa4c358cd708c Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Thu, 21 Nov 2024 15:39:12 +0800 Subject: [PATCH 08/77] =?UTF-8?q?=E5=95=86=E5=93=81=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/mapper/TbProductMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/mapper/TbProductMapper.xml b/src/main/resources/mapper/TbProductMapper.xml index 7f29709..df2ec2b 100644 --- a/src/main/resources/mapper/TbProductMapper.xml +++ b/src/main/resources/mapper/TbProductMapper.xml @@ -47,7 +47,7 @@ - id, category_id, spec_id, merchant_id, shop_id, name, short_title, + id, category_id, spec_id, shop_id, name, short_title, type, pack_fee, low_price, unit_id, cover_img, images, sort, status, is_hot, type_enum, is_del, is_stock, is_pause_sale, created_at, updated_at, group_type, group_snap, spec_info, select_spec, spec_table_headers, From 9b1352360d205a615c137e12a461270eede0c9aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Mon, 25 Nov 2024 10:56:22 +0800 Subject: [PATCH 09/77] =?UTF-8?q?feat:=201.=E4=B8=B4=E6=97=B6=E8=8F=9C?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=202.=E8=B4=AD=E7=89=A9=E8=BD=A6=E6=95=B0?= =?UTF-8?q?=E9=87=8F=E5=AD=97=E6=AE=B5=E4=BF=AE=E6=94=B9=E4=B8=BAdecimal?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bean/constant/TableConstant.java | 2 +- .../controller/OrderController.java | 8 + .../cashierservice/dao/TbProductMapper.java | 7 +- .../system/cashierservice/entity/OrderVo.java | 2 - .../cashierservice/entity/TbCashierCart.java | 116 +++- .../cashierservice/entity/TbOrderDetail.java | 4 +- .../cashierservice/entity/TbProduct.java | 75 --- .../entity/dto/AddTemporaryDishesDTO.java | 28 + .../entity/dto/ShopEatTypeInfoDTO.java | 11 + .../cashierservice/entity/vo/CartVo.java | 7 +- .../rabbit/PrintMechineConsumer.java | 28 +- .../rabbit/print/FeiPrinter.java | 4 +- .../rabbit/print/LocalLabelPrinter.java | 4 +- .../rabbit/print/YxyPrinter.java | 7 +- .../service/CloudPrinterService.java | 13 +- .../cashierservice/service/ConsService.java | 4 +- .../cashierservice/service/DutyService.java | 24 +- .../service/MpCashierCartService.java | 17 + .../service/MpOrderDetailService.java | 2 +- .../cashierservice/service/OrderService.java | 401 +++++++----- .../cashierservice/service/PayService.java | 611 +++++++++--------- .../service/ProductService.java | 5 +- .../impl/MpCashierCartServiceImpl.java | 40 ++ .../impl/MpOrderDetailServiceImpl.java | 2 +- src/main/resources/mapper/TbProductMapper.xml | 569 ++-------------- 25 files changed, 873 insertions(+), 1118 deletions(-) create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/AddTemporaryDishesDTO.java diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/bean/constant/TableConstant.java b/src/main/java/com/chaozhanggui/system/cashierservice/bean/constant/TableConstant.java index 672e01e..4fa575f 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/bean/constant/TableConstant.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/bean/constant/TableConstant.java @@ -51,7 +51,7 @@ public interface TableConstant { public enum UseType { TAKEOUT("takeout"), DINE_IN_AFTER("dine-in-after"), - DINE_IN_BEFORE("dine-in-before"); + DINE_IN_BEFORE("dine-in-before"), NONE_TABLE("dine-in"); private final String value; UseType(String value) { diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java b/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java index 7bd5a51..a0bf2fd 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.chaozhanggui.system.cashierservice.entity.OrderVo; +import com.chaozhanggui.system.cashierservice.entity.dto.AddTemporaryDishesDTO; import com.chaozhanggui.system.cashierservice.entity.dto.ChoseCountDTO; import com.chaozhanggui.system.cashierservice.entity.dto.ReturnCartDTO; import com.chaozhanggui.system.cashierservice.entity.dto.UpdateVipDTO; @@ -18,6 +19,8 @@ import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import javax.validation.Valid; + @CrossOrigin(origins = "*") @RestController @Slf4j @@ -45,6 +48,11 @@ public class OrderController { cartVo.getIsPack(), cartVo.getUuid(), cartVo.getType(), cartVo.getTableId()); } + @PostMapping("/temporaryDishes") + public Result addTemporaryDishes(@Valid @RequestBody AddTemporaryDishesDTO temporaryDishesDTO) { + return Result.success(CodeEnum.SUCCESS, orderService.addTemporaryDishes(temporaryDishesDTO)); + } + @GetMapping("/queryCart") public Result queryCart(@RequestHeader("token") String token, @RequestHeader("loginName") String loginName, diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProductMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProductMapper.java index b15b5e8..f563f93 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProductMapper.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbProductMapper.java @@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import org.springframework.stereotype.Component; +import java.math.BigDecimal; import java.util.List; public interface TbProductMapper { @@ -46,13 +47,13 @@ public interface TbProductMapper { List selectBySkuId(Integer skuId); @Update("update tb_product set stock_number=stock_number+#{num} WHERE id=#{id}") - int incrStock(String id, int num); + int incrStock(String id, BigDecimal num); @Update("update tb_product set stock_number=stock_number-#{num} WHERE id=#{id} and stock_number-#{num} >= 0") - int decrStock(String id, int num); + int decrStock(String id, BigDecimal num); @Update("update tb_product set stock_number=stock_number-#{num} WHERE id=#{id}") - int decrStockUnCheck(String id, int num); + int decrStockUnCheck(String id, BigDecimal num); @Select("select * from tb_product product where product.id=#{productId} and product.shop_id=#{shopId} and product.is_del=0") TbProduct selectByShopIdAndId(@Param("productId") Integer productId, @Param("shopId") Integer shopId); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/OrderVo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/OrderVo.java index de982e9..031f7b0 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/OrderVo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/OrderVo.java @@ -19,8 +19,6 @@ public class OrderVo { private Integer type; private String sendType; - - private String eatModel; @Min(1) private Integer seatNum; } 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 7c5abc9..f53a3e9 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbCashierCart.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbCashierCart.java @@ -1,10 +1,14 @@ package com.chaozhanggui.system.cashierservice.entity; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.bean.copier.CopyOptions; import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data; +import javax.validation.constraints.NotNull; import java.io.Serializable; import java.math.BigDecimal; +import java.math.RoundingMode; @Data public class TbCashierCart implements Serializable { @@ -12,9 +16,9 @@ public class TbCashierCart implements Serializable { private String masterId; - private String orderId; + private Integer orderId; - private String refOrderId; + private Integer refOrderId; private BigDecimal totalAmount; @@ -29,48 +33,62 @@ public class TbCashierCart implements Serializable { private String name; private BigDecimal salePrice; - private BigDecimal packFee; - private Integer number; + private BigDecimal number; - private Integer totalNumber; + private BigDecimal totalNumber; - private Integer refundNumber; + private BigDecimal refundNumber; private String categoryId; - private String tradeDay; private String status; - private Byte type; + private Integer type; private String merchantId; private String shopId; - private String isPack; - private String isGift; - private String skuName; - private String uuid; private Long createdAt; - private Long pendingAt; private Long updatedAt; + private Integer userId; + private String tableId; - private String useType; + + private BigDecimal packFee; + + private String tradeDay; + + private String isPack; + + private String isGift; + + private Long pendingAt; + + private String uuid; + private String skuName; private Integer placeNum; + private String note; + private String useType; private String platformType; - private BigDecimal memberPrice; + // 优惠券id + private Integer userCouponId; + private BigDecimal memberPrice = BigDecimal.ZERO; private Integer isMember; + // 是否临时菜品 + private Integer isTemporary; + private String unit; + private BigDecimal discountSaleAmount; + private String discountSaleNote; + private Boolean isPrint; + private String useCouponInfo; - @TableField(exist = false) - private TbProductSpec tbProductSpec; - - @TableField(exist = false) - private String selectSpec=""; - - private static final long serialVersionUID = 1L; + public void copy(TbCashierCart source) { + BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true)); + } /** * 根据是否会员充值价格 @@ -81,12 +99,58 @@ public class TbCashierCart implements Serializable { } if ("true".equals(isGift)) { totalAmount = packFee; - }else { + } else { if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) { - totalAmount = BigDecimal.valueOf(totalNumber).multiply(memberPrice).add(packFee); - }else { - totalAmount = BigDecimal.valueOf(totalNumber).multiply(salePrice).add(packFee); + totalAmount = totalNumber.multiply(memberPrice).add(packFee); + } else { + totalAmount = totalNumber.multiply(discountSaleAmount != null ? discountSaleAmount : salePrice).add(packFee); } } } + + /** + * 根据是否会员充值价格 + */ + public void resetTotalAmount(BigDecimal discountRadio) { + if (discountRadio == null) { + discountRadio = BigDecimal.ONE; + } + if ("false".equals(isPack)) { + packFee = BigDecimal.ZERO; + } + if ("true".equals(isGift)) { + totalAmount = packFee; + } else { + if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) { + totalAmount = totalNumber.multiply(memberPrice).add(packFee).multiply(discountRadio); + } else { + totalAmount = totalNumber.multiply(discountSaleAmount != null ? discountSaleAmount : salePrice).add(packFee).multiply(discountRadio); + } + } + } + + /** + * 获取总价不包含打包费 + * + */ + public BigDecimal getTotalAmountByNum(BigDecimal num, BigDecimal discountRadio) { + if (discountRadio == null) { + discountRadio = new BigDecimal("1"); + } + if (num == null) { + num = totalNumber; + } + + if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) { + return num.multiply(memberPrice).multiply(discountRadio).add(packFee).setScale(2, RoundingMode.HALF_UP); + }else { + return num.multiply(discountSaleAmount != null ? discountSaleAmount : salePrice).add(packFee).multiply(discountRadio).setScale(2, RoundingMode.HALF_UP); + } +// if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) { +// return num.multiply(memberPrice); +// } else { +// return num.multiply(discountSaleAmount != null ? discountSaleAmount : salePrice); +// } + } + } 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 418f470..f88a117 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java @@ -19,8 +19,8 @@ public class TbOrderDetail implements Serializable { private Integer productSkuId; - private Integer num; - private Integer returnNum; + private BigDecimal num; + private BigDecimal returnNum; private String productName; private String status; diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProduct.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProduct.java index ce271d4..462c2bf 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProduct.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProduct.java @@ -15,12 +15,6 @@ public class TbProduct implements Serializable { private Integer specId; - private String sourcePath; - - private Integer brandId; - - private String merchantId; - private String shopId; private String name; @@ -33,103 +27,34 @@ public class TbProduct implements Serializable { private BigDecimal lowPrice; - private BigDecimal lowMemberPrice; private String unitId; - private String unitSnap; private String coverImg; - private String shareImg; - - private String videoCoverImg; - private Integer sort; - private Integer limitNumber; - - private Integer productScore; - private Byte status; private String failMsg; - private Byte isRecommend; - private Byte isHot; - private Byte isNew; - - private Byte isOnSale; - - private Byte isShow; - private String typeEnum; - /** - * 是否共享库存 - */ - private Byte isDistribute; - private Byte isDel; private Byte isStock; private Byte isPauseSale; - private Byte isFreeFreight; - - private Long freightId; - - private String strategyType; - - private Integer strategyId; - - private Byte isVip; - - private Byte isDelete; - private Long createdAt; private Long updatedAt; - private Double baseSalesNumber; - private Integer realSalesNumber; - private Integer salesNumber; - - private Integer thumbCount; - - private Integer storeCount; - - private Integer furnishMeal; - - private Integer furnishExpress; - - private Integer furnishDraw; - - private Integer furnishVir; - - private Byte isCombo; - - private Byte isShowCash; - - private Byte isShowMall; - - private Byte isNeedExamine; - - private Byte showOnMallStatus; - - private Long showOnMallTime; - - private String showOnMallErrorMsg; - - private Byte enableLabel; - - private String taxConfigId; - private String specTableHeaders; private Integer stockNumber; diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/AddTemporaryDishesDTO.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/AddTemporaryDishesDTO.java new file mode 100644 index 0000000..5f0ef51 --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/AddTemporaryDishesDTO.java @@ -0,0 +1,28 @@ +package com.chaozhanggui.system.cashierservice.entity.dto; + +import lombok.Data; + +import javax.validation.constraints.*; +import java.math.BigDecimal; + +@Data +public class AddTemporaryDishesDTO { + @NotEmpty + private String masterId; + @NotNull + private Integer shopId; + private String tableId; + @NotBlank(message = "菜品名不为空") + private String name; + @NotNull(message = "分类不为空") + private Integer categoryId; + @Min(value = 0, message = "价格最低为0") + private BigDecimal price; + @NotNull + @DecimalMin(value = "0.01") + private BigDecimal num; + @NotBlank(message = "单位不为空") + private String unit; + private String note; + private Integer vipUserId; +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/ShopEatTypeInfoDTO.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/ShopEatTypeInfoDTO.java index 6f78fd8..9dac5c7 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/ShopEatTypeInfoDTO.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/ShopEatTypeInfoDTO.java @@ -7,13 +7,24 @@ import lombok.Data; @Data @AllArgsConstructor public class ShopEatTypeInfoDTO { + // 是否外带 private boolean isTakeout; + // 是否快餐 private boolean isMunchies; + // 是否后付费 private boolean isDineInAfter; + // 是否先付费 private boolean isDineInBefore; + // 是否需要餐位费 private boolean needSeatFee; + // 是否无桌台下单 + private boolean isNoneTable; + // 是否增加masterId + private boolean isIncrMaterId; private boolean isMemberPrice; private TbShopInfo shopInfo; private String useType; + private Object shopId; + private String tableId; private String sendType; } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/CartVo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/CartVo.java index c66fe1e..7fbc13f 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/CartVo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/CartVo.java @@ -2,9 +2,11 @@ package com.chaozhanggui.system.cashierservice.entity.vo; import lombok.Data; +import javax.validation.constraints.DecimalMin; import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import java.math.BigDecimal; @Data public class CartVo { @@ -12,8 +14,9 @@ public class CartVo { @NotNull private Integer shopId; private Integer skuId; - @Min(1) - private Integer number; + @NotNull + @DecimalMin("0.01") + private BigDecimal number; private String isPack; private String isGift; private String status; 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 db67347..ec321b7 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java @@ -19,6 +19,7 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -311,10 +312,10 @@ public class PrintMechineConsumer { if (info != null) { - isReturn = it.getNum() - Integer.parseInt(info) < 0; - printerNum = it.getNum() - Integer.parseInt(info); + isReturn = it.getNum().intValue() - Integer.parseInt(info) < 0; + printerNum = it.getNum().intValue() - Integer.parseInt(info); } else { - printerNum = it.getNum(); + printerNum = it.getNum().intValue(); } log.info("已打印数量, {}, 未打印数量: {}", info, printerNum); @@ -331,7 +332,7 @@ public class PrintMechineConsumer { redisTemplate.expire(printKey, 24, TimeUnit.HOURS); // 已打印不再打印 - if (info != null && it.getNum() - Integer.parseInt(info) == 0) { + if (info != null && it.getNum().intValue() - Integer.parseInt(info) == 0) { return; } @@ -366,7 +367,8 @@ public class PrintMechineConsumer { TbOrderDetail orderDetail = (TbOrderDetail) item; String data = PrinterUtils.getPrintData("return", StrUtil.isBlank(orderInfo.getTableName()) ? orderInfo.getMasterId() : orderInfo.getTableName(), - DateUtils.getTime(new Date(orderInfo.getCreatedAt())), orderDetail.getProductName(), orderDetail.getNum(), orderDetail.getRemark(), null); + // todo 修改为bigdecimal + DateUtils.getTime(new Date(orderInfo.getCreatedAt())), orderDetail.getProductName(), orderDetail.getNum().intValue(), orderDetail.getRemark(), null); String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔退款订单,请及时处理\"}"; PrinterUtils.printTickets(voiceJson, 3, 1, tbPrintMachineWithBLOBs.getAddress(), data); @@ -432,9 +434,10 @@ public class PrintMechineConsumer { printProductSet.forEach(item -> { log.info("已删除订单,打印退款票据, {}", item); TbOrderDetail orderDetail = (TbOrderDetail) item; + // todo 修改为bigdecimal String data = PrinterUtils.getPrintData("return", StrUtil.isBlank(orderInfo.getTableName()) ? orderInfo.getMasterId() : orderInfo.getTableName(), - DateUtils.getTime(new Date(orderInfo.getCreatedAt())), orderDetail.getProductName(), orderDetail.getNum(), orderDetail.getRemark(), null); + DateUtils.getTime(new Date(orderInfo.getCreatedAt())), orderDetail.getProductName(), orderDetail.getNum().intValue(), orderDetail.getRemark(), null); String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔退款订单,请及时处理\"}"; PrinterUtils.printTickets(voiceJson, 3, 1, machine.getAddress(), data); @@ -474,9 +477,10 @@ public class PrintMechineConsumer { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } + // todo 修改为bigdecimal String data = PrinterUtils.getPrintData("", orderInfo.getMasterId(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getProductName(), - it.getNum(), remark, null); + it.getNum().intValue(), remark, null); String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; PrinterUtils.printTickets(voiceJson, 3, 1, tbPrintMachineWithBLOBs.getAddress(), data); } @@ -502,8 +506,10 @@ public class PrintMechineConsumer { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } + // todo 修改为bigdecimal + String data = PrinterUtils.getPrintData("return", orderInfo.getPayType().equals("wx_lite") ? - orderInfo.getTableName() : orderInfo.getMasterId(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getProductName(), it.getNum(), remark, null); + orderInfo.getTableName() : orderInfo.getMasterId(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getProductName(), it.getNum().intValue(), remark, null); String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔退款订单,请及时处理\"}"; PrinterUtils.printTickets(voiceJson, 3, 1, tbPrintMachineWithBLOBs.getAddress(), data); } @@ -524,7 +530,7 @@ public class PrintMechineConsumer { if (info == null) { return false; } - orderDetail.setNum(orderDetail.getNum() - Integer.parseInt(info)); + orderDetail.setNum(orderDetail.getNum().subtract(new BigDecimal(info))); return true; } @@ -673,7 +679,7 @@ public class PrintMechineConsumer { } - FeieyunPrintUtil.getPrintData(tbPrintMachineWithBLOBs.getAddress(), orderInfo, DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getName(), it.getNumber(), remark); + FeieyunPrintUtil.getPrintData(tbPrintMachineWithBLOBs.getAddress(), orderInfo, DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getName(), it.getNumber().intValue(), remark); } }); } @@ -709,7 +715,7 @@ public class PrintMechineConsumer { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - for (int i = 0; i < it.getNumber(); i++) { + for (int i = 0; i < it.getNumber().intValue(); i++) { FeieyunPrintUtil.printLabelMsg(tbPrintMachineWithBLOBs.getAddress(), orderInfo.getTableName(), it.getName(), 1, DateUtils.getTimes(new Date(orderInfo.getCreatedAt())), it.getSalePrice().toPlainString(), remark); } } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/FeiPrinter.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/FeiPrinter.java index cc26ce6..6845d98 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/FeiPrinter.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/FeiPrinter.java @@ -69,8 +69,10 @@ public class FeiPrinter extends PrinterHandler { return; } String remark = sku.getSpecSnap(); + // todo 修改为bigdecimal + String[] resp = FeieyunPrintUtil.getPrintData(machine.getAddress(), orderInfo, - DateUtils.getTime(new Date(orderInfo.getCreatedAt())), orderDetail.getProductName(), orderDetail.getNum(), remark); + DateUtils.getTime(new Date(orderInfo.getCreatedAt())), orderDetail.getProductName(), orderDetail.getNum().intValue(), remark); shopPrintLogService.save(machine, "新订单", resp[0], resp[1]); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/LocalLabelPrinter.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/LocalLabelPrinter.java index d61639d..0d1f9ed 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/LocalLabelPrinter.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/LocalLabelPrinter.java @@ -47,7 +47,9 @@ public class LocalLabelPrinter extends PrinterHandler { log.warn("打印菜品标签票失败 sku商品不存在: {}", orderDetail); return; } - for (int i = 0; i < orderDetail.getNum(); i++) { + // todo 修改为bigdecimal + + for (int i = 0; i < orderDetail.getNum().intValue(); i++) { String[] resp = FeieyunPrintUtil.printLabelMsg(machine.getAddress(), orderInfo.getTableName(), orderDetail.getProductName(), 1, DateUtils.getTimes(new Date(orderInfo.getCreatedAt())), sku.getSalePrice().toPlainString(), sku.getSpecSnap()); shopPrintLogService.save(machine, "新订单", resp[0], resp[1]); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/YxyPrinter.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/YxyPrinter.java index 55ad0d1..2f11557 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/YxyPrinter.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/YxyPrinter.java @@ -62,10 +62,11 @@ public class YxyPrinter extends PrinterHandler { @Override protected void returnDishesPrint(TbOrderInfo orderInfo, TbOrderDetail orderDetail, TbPrintMachine machine) { + // todo 修改为bigdecimal String data = PrinterUtils.getPrintData("return", getPickupNum(orderInfo), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), orderDetail.getProductName(), - Math.abs(orderDetail.getNum()), orderDetail.getRemark(), orderDetail.getNote()); + orderDetail.getNum().abs().intValue(), orderDetail.getRemark(), orderDetail.getNote()); String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔退款订单,请及时处理\"}"; // String voiceJson = "{\"bizType\":\"2\",\"content\":\"\"}"; String resp = PrinterUtils.printTickets(voiceJson, 3, 1, machine.getAddress(), data); @@ -74,9 +75,11 @@ public class YxyPrinter extends PrinterHandler { @Override protected void normalDishesPrint(TbOrderInfo orderInfo, TbOrderDetail orderDetail, TbPrintMachine machine) { + // todo 修改为bigdecimal + String data = PrinterUtils.getPrintData("", getPickupNum(orderInfo), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), orderDetail.getProductName(), - orderDetail.getNum(), orderDetail.getRemark(), orderDetail.getNote()); + orderDetail.getNum().intValue(), orderDetail.getRemark(), orderDetail.getNote()); String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; // String voiceJson = "{\"bizType\":\"2\",\"content\":\"\"}"; String resp = PrinterUtils.printTickets(voiceJson, 3, 1, machine.getAddress(), data); 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 1bc6bab..5b3bfa2 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java @@ -189,8 +189,10 @@ public class CloudPrinterService { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } + // todo 修改为bigdecimal + String data = PrinterUtils.getPrintData("return", orderInfo.getPayType().equals("wx_lite") ? - orderInfo.getTableName() : orderInfo.getMasterId(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getProductName(), it.getNum(), remark, null); + orderInfo.getTableName() : orderInfo.getMasterId(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getProductName(), it.getNum().intValue(), remark, null); String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔退款订单,请及时处理\"}"; PrinterUtils.printTickets(voiceJson, 3, Integer.valueOf(printerNum), tbPrintMachineWithBLOBs.getAddress(), data); } @@ -223,9 +225,10 @@ public class CloudPrinterService { remark = tbProductSkuWithBLOBs.getSpecSnap(); } + // todo 修改为bigdecimal String data = PrinterUtils.getPrintData("", orderInfo.getOrderType().equals("miniapp") ? - orderInfo.getTableName() : orderInfo.getMasterId(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getName(), it.getNumber(), remark, null); + orderInfo.getTableName() : orderInfo.getMasterId(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getName(), it.getNumber().intValue(), remark, null); String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; PrinterUtils.printTickets(voiceJson, 3, Integer.valueOf(printerNum), tbPrintMachineWithBLOBs.getAddress(), data); @@ -526,8 +529,9 @@ public class CloudPrinterService { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } + // todo 修改为bigdecimal - FeieyunPrintUtil.getPrintData(tbPrintMachineWithBLOBs.getAddress(), orderInfo, DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getName(), it.getNumber(), remark); + FeieyunPrintUtil.getPrintData(tbPrintMachineWithBLOBs.getAddress(), orderInfo, DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getName(), it.getNumber().intValue(), remark); } }); } @@ -558,8 +562,9 @@ public class CloudPrinterService { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } + // todo 修改为bigdecimal - for (int i = 0; i < it.getNumber(); i++) { + for (int i = 0; i < it.getNumber().intValue(); i++) { FeieyunPrintUtil.printLabelMsg(tbPrintMachineWithBLOBs.getAddress(), orderInfo.getOrderType().equals("miniapp") ? orderInfo.getTableName() : orderInfo.getMasterId(), it.getName(), 1, DateUtils.getTimes(new Date(orderInfo.getCreatedAt())), it.getSalePrice().toPlainString(), remark); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/ConsService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/ConsService.java index 546ab2b..5071ede 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/ConsService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/ConsService.java @@ -84,7 +84,7 @@ public class ConsService { flow.setConName(tbConsInfo.getConName()); flow.setProSkuId(proskuCon.getProductSkuId()); if("create".equals(type)){ - amount=proskuCon.getSurplusStock().multiply(new BigDecimal(orderDetail.getNum())); + amount=proskuCon.getSurplusStock().multiply(orderDetail.getNum()); flow.setAmount(amount); @@ -96,7 +96,7 @@ public class ConsService { tbConsInfo.setUpdateTime(new Timestamp(System.currentTimeMillis())); }else if("delete".equals(type)){ - amount=proskuCon.getSurplusStock().multiply(new BigDecimal(orderDetail.getNum())).negate(); + amount=proskuCon.getSurplusStock().multiply(orderDetail.getNum()).negate(); flow.setAmount(amount.abs()); flow.setBizCode("cancelCart"); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/DutyService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/DutyService.java index c3df527..8f0553d 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/DutyService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/DutyService.java @@ -181,14 +181,16 @@ public class DutyService { ShopUserDutyDetail shopUserDutyDetail = new ShopUserDutyDetail(); shopUserDutyDetail.setDutyId(shopUserDuty.getId()); shopUserDutyDetail.setAmount(orderDetail.getPriceAmount()); - shopUserDutyDetail.setNum(orderDetail.getNum()); + // todo 修改为bigdecimal + shopUserDutyDetail.setNum(orderDetail.getNum().intValue()); shopUserDutyDetail.setSkuId(orderDetail.getProductSkuId()); shopUserDutyDetail.setSkuName(orderDetail.getProductSkuName()); shopUserDutyDetail.setProductId(orderDetail.getProductId()); shopUserDutyDetail.setProductName(orderDetail.getProductName()); detaiList.add(shopUserDutyDetail); // productSkuMapper.updateByskuId(orderDetail.getProductSkuId(), orderDetail.getNum()); - subInventory(shopId, orderDetail.getProductSkuId(), orderDetail.getNum()); + // todo 修改为bigdecimal + subInventory(shopId, orderDetail.getProductSkuId(), orderDetail.getNum().intValue()); } if (detaiList.size() > 0) { shopUserDutyDetailMapper.batchInsert(detaiList); @@ -214,14 +216,15 @@ public class DutyService { for (TbOrderDetail orderDetail : list) { if (map.containsKey(orderDetail.getProductSkuId())) { ShopUserDutyDetail shopUserDutyDetail = map.get(orderDetail.getProductSkuId()); - shopUserDutyDetail.setNum(shopUserDutyDetail.getNum() + orderDetail.getNum()); + // todo 修改为bigdecimal + shopUserDutyDetail.setNum(shopUserDutyDetail.getNum() + orderDetail.getNum().intValue()); shopUserDutyDetail.setAmount(shopUserDutyDetail.getAmount().add(orderDetail.getPriceAmount().add(orderDetail.getPackAmount()))); shopUserDutyDetailMapper.updateByPrimaryKeySelective(shopUserDutyDetail); } else { ShopUserDutyDetail shopUserDutyDetail = new ShopUserDutyDetail(); shopUserDutyDetail.setDutyId(shopUserDuty.getId()); shopUserDutyDetail.setAmount(orderDetail.getPriceAmount()); - shopUserDutyDetail.setNum(orderDetail.getNum()); + shopUserDutyDetail.setNum(orderDetail.getNum().intValue()); shopUserDutyDetail.setSkuId(orderDetail.getProductSkuId()); shopUserDutyDetail.setSkuName(orderDetail.getProductSkuName()); shopUserDutyDetail.setProductId(orderDetail.getProductId()); @@ -230,7 +233,8 @@ public class DutyService { } // productSkuMapper.updateByskuId(orderDetail.getProductSkuId(), orderDetail.getNum()); - subInventory(shopId, orderDetail.getProductSkuId(), orderDetail.getNum()); + // todo 修改为bigdecimal + subInventory(shopId, orderDetail.getProductSkuId(), orderDetail.getNum().intValue()); } if (detaiList.size() > 0) { shopUserDutyDetailMapper.batchInsert(detaiList); @@ -295,7 +299,9 @@ public class DutyService { ShopUserDutyDetail shopUserDutyDetail = new ShopUserDutyDetail(); shopUserDutyDetail.setDutyId(shopUserDuty.getId()); shopUserDutyDetail.setAmount(orderDetail.getPriceAmount()); - shopUserDutyDetail.setNum(orderDetail.getNum()); + // todo 修改为bigdecimal + + shopUserDutyDetail.setNum(orderDetail.getNum().intValue()); shopUserDutyDetail.setSkuId(orderDetail.getProductSkuId()); shopUserDutyDetail.setSkuName(orderDetail.getProductSkuName()); shopUserDutyDetail.setProductId(orderDetail.getProductId()); @@ -326,14 +332,16 @@ public class DutyService { for (TbOrderDetail orderDetail : list) { if (map.containsKey(orderDetail.getProductSkuId())) { ShopUserDutyDetail shopUserDutyDetail = map.get(orderDetail.getProductSkuId()); - shopUserDutyDetail.setNum(shopUserDutyDetail.getNum() + orderDetail.getNum()); + // todo 修改为bigdecimal + shopUserDutyDetail.setNum(shopUserDutyDetail.getNum() + orderDetail.getNum().intValue()); shopUserDutyDetail.setAmount(shopUserDutyDetail.getAmount().add(orderDetail.getPriceAmount().add(orderDetail.getPackAmount()))); shopUserDutyDetailMapper.updateByPrimaryKeySelective(shopUserDutyDetail); } else { ShopUserDutyDetail shopUserDutyDetail = new ShopUserDutyDetail(); shopUserDutyDetail.setDutyId(shopUserDuty.getId()); shopUserDutyDetail.setAmount(orderDetail.getPriceAmount()); - shopUserDutyDetail.setNum(orderDetail.getNum()); + // todo 修改为bigdecimal + shopUserDutyDetail.setNum(orderDetail.getNum().intValue()); shopUserDutyDetail.setSkuId(orderDetail.getProductSkuId()); shopUserDutyDetail.setSkuName(orderDetail.getProductSkuName()); shopUserDutyDetail.setProductId(orderDetail.getProductId()); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/MpCashierCartService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/MpCashierCartService.java index 6b2d24c..3d101f4 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/MpCashierCartService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/MpCashierCartService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.chaozhanggui.system.cashierservice.bean.constant.TableConstant; import com.chaozhanggui.system.cashierservice.entity.TbCashierCart; import com.chaozhanggui.system.cashierservice.entity.TbOrderDetail; +import com.chaozhanggui.system.cashierservice.entity.dto.ShopEatTypeInfoDTO; import java.util.List; @@ -36,5 +37,21 @@ public interface MpCashierCartService extends IService { */ List selectCart(String useType, String masterId, Integer orderId, Integer shopId, TableConstant.OrderInfo.Status... statusList); + + /** + * 根据就餐信息查询购物车信息 + * @param shopEatTypeInfoDTO 就餐信息 + * @return 购物车信息 + */ + TbCashierCart selectOneCartByShopEatType(ShopEatTypeInfoDTO shopEatTypeInfoDTO, String masterId, Integer productId, Integer skuId, boolean isGift, boolean isTemp); + + + /** + * 根据店铺id和购物车id查询信息 + * @param shopId 店铺id + * @param cartId 购物车id + * @param statuses 状态 + */ + TbCashierCart selectByShopIdAndId(Integer shopId, Integer cartId, TableConstant.OrderInfo.Status... statuses); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderDetailService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderDetailService.java index a415f24..beaaf0a 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderDetailService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderDetailService.java @@ -36,6 +36,6 @@ public interface MpOrderDetailService extends IService { * 根据订单id删除详情 * @param orderId 订单id */ - boolean removeByOrderId(String orderId); + boolean removeByOrderId(Integer orderId); } 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 5a1e3ca..1c856c9 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -16,10 +16,7 @@ import com.chaozhanggui.system.cashierservice.bean.*; 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.ChoseCountDTO; -import com.chaozhanggui.system.cashierservice.entity.dto.ReturnCartDTO; -import com.chaozhanggui.system.cashierservice.entity.dto.ShopEatTypeInfoDTO; -import com.chaozhanggui.system.cashierservice.entity.dto.UpdateVipDTO; +import com.chaozhanggui.system.cashierservice.entity.dto.*; import com.chaozhanggui.system.cashierservice.entity.po.CartPo; import com.chaozhanggui.system.cashierservice.entity.po.OrderPo; import com.chaozhanggui.system.cashierservice.entity.po.QueryCartPo; @@ -145,7 +142,39 @@ public class OrderService { this.mpCashierCartService = mpCashierCartService; } - private ShopEatTypeInfoDTO checkEatModel(Integer shopId, String eatModel) { + /** + * 校验就餐模式是否存在并返回就餐类型信息 + * + * @param tableId 台桌id + * @param shopId 店铺id + * @return 就餐类型信息 + */ + public ShopEatTypeInfoDTO checkEatModel(Object shopId, String tableId) { + String eatModel = StrUtil.isBlank(tableId) ? ShopInfoEatModelEnum.TAKE_OUT.getValue() : ShopInfoEatModelEnum.DINE_IN.getValue(); + return getShopEatTypeInfoDTO(shopId, eatModel, tableId); + } + + /** + * 校验就餐模式是否存在并返回就餐类型信息 + * + * @param tableId 台桌id + * @param shopId 店铺id + * @return 就餐类型信息 + */ + public ShopEatTypeInfoDTO checkEatModel(Object shopId, String tableId, String useType) { + String eatModel = OrderUseTypeEnum.TAKEOUT.getValue().equals(useType) ? ShopInfoEatModelEnum.TAKE_OUT.getValue() : ShopInfoEatModelEnum.DINE_IN.getValue(); + return getShopEatTypeInfoDTO(shopId, eatModel, tableId); + } + + /** + * 通过店铺id和就餐模式获取当前店铺的就餐类型信息 + * + * @param shopId 店铺id + * @param eatModel 就餐模式 + * @param tableId 台桌id + * @return just餐类型信息 + */ + private ShopEatTypeInfoDTO getShopEatTypeInfoDTO(Object shopId, String eatModel, String tableId) { TbShopInfo shopInfo = mpShopInfoMapper.selectOne(new LambdaQueryWrapper() .eq(TbShopInfo::getId, shopId) .eq(TbShopInfo::getStatus, 1)); @@ -153,38 +182,42 @@ public class OrderService { throw new MsgException("店铺信息不存在"); } - if (!"take-out".equals(eatModel) && !shopInfo.getEatModel().contains(eatModel)) { + if (!shopInfo.getEatModel().contains(eatModel)) { throw new MsgException("当前店铺未开启此就餐模式"); } - boolean isTakeout = ShopInfoEatModelEnum.TAKE_OUT.getValue().equals(eatModel); // 是否是快餐版/先付费 boolean isMunchies = StrUtil.isNotBlank(shopInfo.getRegisterType()) && ShopInfoRegisterlEnum.MUNCHIES.getValue().equals(shopInfo.getRegisterType()); - boolean isDineInAfter = !isMunchies && !isTakeout; - boolean isDineInBefore = isMunchies && !isTakeout; - boolean needSeatFee = !isTakeout && (shopInfo.getIsTableFee() == null || shopInfo.getIsTableFee() == 0); + boolean hasTable = StrUtil.isNotBlank(tableId); + // 是否先付费 + boolean isDineInAfter = hasTable && !isMunchies && !isTakeout; + // 是否后付费 + boolean isDineInBefore = hasTable && isMunchies && !isTakeout; + // 是否无台桌 + boolean isNoneTable = !hasTable && !isTakeout; boolean isMemberPrice = shopInfo.getIsMemberPrice() != null && shopInfo.getIsMemberPrice() == 1; - return new ShopEatTypeInfoDTO(isTakeout, isMunchies, isDineInAfter, isDineInBefore, needSeatFee, isMemberPrice, shopInfo, isTakeout ? OrderUseTypeEnum.TAKEOUT.getValue() : - isMunchies ? OrderUseTypeEnum.DINE_IN_BEFORE.getValue() : OrderUseTypeEnum.DINE_IN_AFTER.getValue(), isTakeout ? OrderSendTypeEnums.TAKE_SELF.getValue() : OrderSendTypeEnums.TABLE.getValue()); + boolean needSeatFee = !isTakeout && (shopInfo.getIsTableFee() == null || shopInfo.getIsTableFee() == 0); + boolean isIncrMasterId = isTakeout || isNoneTable; + + return new ShopEatTypeInfoDTO(isTakeout, isMunchies, isDineInAfter, isDineInBefore, needSeatFee, isNoneTable, isIncrMasterId, isMemberPrice, shopInfo, isTakeout ? TableConstant.OrderInfo.UseType.TAKEOUT.getValue() : + isDineInBefore ? TableConstant.OrderInfo.UseType.DINE_IN_BEFORE.getValue() : isNoneTable ? TableConstant.OrderInfo.UseType.NONE_TABLE.getValue() : TableConstant.OrderInfo.UseType.DINE_IN_AFTER.getValue(), + shopId, tableId, isTakeout ? OrderSendTypeEnums.TAKE_SELF.getValue() : OrderSendTypeEnums.TABLE.getValue()); } - @Transactional(rollbackFor = Exception.class) - public Result createCart(String masterId, Integer productId, Integer shopId, Integer skuId, Integer number, + public Result createCart(String masterId, Integer productId, Integer shopId, Integer skuId, BigDecimal number, String userId, String clientType, Integer cartId, String isGift, String isPack, String uuid, String type, String tableId) { - if (productId == null || skuId == null || number == null) { + if (number == null) { return Result.fail(CodeEnum.PARAM); } - - String eatModel = StrUtil.isBlank(tableId) ? ShopInfoEatModelEnum.TAKE_OUT.getValue() : ShopInfoEatModelEnum.DINE_IN.getValue(); - ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(shopId, eatModel); + ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(shopId, tableId); // 台桌点单 - boolean isSeatCart = TableConstant.CashierCart.ID.equals(productId.toString()); + boolean isSeatCart = productId != null && TableConstant.CashierCart.ID.equals(productId.toString()); if ((StrUtil.isNotBlank(tableId))) { TbShopTable shopTable = mpShopTableMapper.selectOne(new LambdaUpdateWrapper() .eq(TbShopTable::getQrcode, tableId) @@ -193,17 +226,19 @@ public class OrderService { if (shopTable == null) { return Result.fail("台桌不处于开台或空闲状态"); } - if (shopEatTypeInfoDTO.isNeedSeatFee() && number > shopTable.getMaxCapacity() && isSeatCart) { + if (shopEatTypeInfoDTO.isNeedSeatFee() && number.intValue() > shopTable.getMaxCapacity() && isSeatCart) { return Result.fail("当前台桌最大人数未: " + shopTable.getMaxCapacity()); } } LambdaQueryWrapper cartQuery = new LambdaQueryWrapper() .eq(TbCashierCart::getShopId, shopId) - .eq(TbCashierCart::getSkuId, skuId) - .eq(TbCashierCart::getProductId, productId) .in(TbCashierCart::getStatus, "create") .eq(TbCashierCart::getId, cartId); + if (productId != null) { + cartQuery.eq(TbCashierCart::getProductId, productId) + .eq(TbCashierCart::getSkuId, skuId); + } TbCashierCart cart = mpCashierCartMapper.selectOne(cartQuery); @@ -213,7 +248,7 @@ public class OrderService { } TbProduct product = null; TbProductSkuWithBLOBs skuWithBLOBs = null; - if (!isSeatCart) { + if (!isSeatCart && productId != null) { product = mpProductMapper.selectOne(new LambdaQueryWrapper() .eq(TbProduct::getId, productId) .eq(TbProduct::getStatus, 1)); @@ -235,11 +270,11 @@ public class OrderService { // 首次加入购物车,并且拥有起售数,设置为起售数 if (cart == null && skuWithBLOBs.getSuit() != null && skuWithBLOBs.getSuit() != 0) { - number = skuWithBLOBs.getSuit(); + number = BigDecimal.valueOf(skuWithBLOBs.getSuit()); // 低于起售,删除商品 - } else if (cart != null && skuWithBLOBs.getSuit() != null && skuWithBLOBs.getSuit() != 0 && number < skuWithBLOBs.getSuit()) { + } else if (cart != null && skuWithBLOBs.getSuit() != null && skuWithBLOBs.getSuit() != 0 && number.compareTo(BigDecimal.valueOf(skuWithBLOBs.getSuit())) < 0) { delCart(masterId, cartId); - if (StrUtil.isNotBlank(cart.getOrderId()) && StrUtil.isNotBlank(cart.getTableId())) { + if (cart.getOrderId() != null && StrUtil.isNotBlank(cart.getTableId())) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() .notIn(TbCashierCart::getStatus, "final", "refund", "closed", "pending") .eq(TbCashierCart::getShopId, cart.getShopId()); @@ -270,7 +305,8 @@ public class OrderService { // 校验库存 if ("1".equals(product.getIsStock().toString())) { - if (product.getStockNumber() - number < 0) { + // todo 数量为浮点数,库存目前整数, 待同一 + if (product.getStockNumber() - number.intValue() < 0) { return Result.fail(CodeEnum.STOCKERROR); } } @@ -294,47 +330,15 @@ public class OrderService { if (Objects.nonNull(cart)) { //查询现有规格商品 - if ("edit".equals(type) && !cart.getSkuId().equals(skuId.toString())) { - TbCashierCart cashierCart = cashierCartMapper.selectByDetail(masterId, productId.toString(), shopId.toString(), skuId.toString(), DateUtils.getDay(), uuid, tableId); - if (Objects.nonNull(cashierCart)) { - cashierCart.setNumber(cashierCart.getNumber() + number); - cashierCart.setTotalNumber(cashierCart.getNumber() + number); - cashierCart.setUpdatedAt(System.currentTimeMillis()); - cashierCartMapper.updateByPrimaryKey(cashierCart); - cashierCartMapper.deleteByPrimaryKey(cart.getId()); - cart = cashierCart; - } - } else { - cart.setSkuId(skuId.toString()); - cart.setNumber(number); - cart.setIsGift(isGift); - cart.setIsPack(isPack); - if (isPack.equals("false")) { - cart.setPackFee(BigDecimal.ZERO); - } else { - if (!isSeatCart) { - cart.setPackFee(new BigDecimal(number).multiply(product.getPackFee())); - }else{ - cart.setPackFee(BigDecimal.ZERO); - } - } - if (isGift.equals("false")) { - if (!isSeatCart) { - cart.setTotalAmount(new BigDecimal(number).multiply(skuWithBLOBs.getSalePrice()).add(cart.getPackFee())); - }else { - cart.setTotalAmount(new BigDecimal(number).multiply(cart.getSalePrice()).add(cart.getPackFee())); - } - } else { - cart.setTotalAmount(BigDecimal.ZERO); - } - - cart.setTotalNumber(number); - cart.setUuid(uuid); - cashierCartMapper.updateByPrimaryKeySelective(cart); - } + cart.setNumber(number); + cart.setIsGift(isGift); + cart.setIsPack(isPack); + cart.setTotalNumber(number); + cart.resetTotalAmount(); + cart.setUuid(uuid); + cashierCartMapper.updateByPrimaryKeySelective(cart); } else { List list = cashierCartMapper.selectALlByMasterId(masterId, "create"); - TbCashierCart cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO); // 不存在新增 if (Objects.isNull(cashierCart)) { @@ -350,7 +354,7 @@ public class OrderService { cashierCart.setMasterId(masterId); cashierCart.setUuid(uuid); cashierCart.setMerchantId(userId); - cashierCart.setProductId(productId.toString()); + cashierCart.setProductId(productId == null ? null : productId.toString()); if (skuWithBLOBs != null) { cashierCart.setSalePrice(skuWithBLOBs.getSalePrice()); cashierCart.setSkuId(skuWithBLOBs.getId().toString()); @@ -365,9 +369,9 @@ public class OrderService { cashierCart.setIsGift(isGift); if (isGift.equals("false")) { if (isSeatCart) { - cashierCart.setTotalAmount(new BigDecimal(number).multiply(cashierCart.getSalePrice())); - }else { - cashierCart.setTotalAmount(new BigDecimal(number).multiply(skuWithBLOBs.getSalePrice())); + cashierCart.setTotalAmount(number.multiply(cashierCart.getSalePrice())); + } else { + cashierCart.setTotalAmount(number.multiply(skuWithBLOBs.getSalePrice())); } } else { cashierCart.setTotalAmount(BigDecimal.ZERO); @@ -376,7 +380,7 @@ public class OrderService { cashierCart.setPackFee(BigDecimal.ZERO); } else { if (!isSeatCart) { - cashierCart.setPackFee(new BigDecimal(number).multiply(product.getPackFee())); + cashierCart.setPackFee(number.multiply(product.getPackFee())); } cashierCart.setTotalAmount(cashierCart.getTotalAmount().add(cashierCart.getPackFee())); @@ -391,18 +395,12 @@ public class OrderService { mpCashierCartMapper.insert(cashierCart); } else { if (type.equals("add")) { - cashierCart.setNumber(cashierCart.getNumber() + number); + cashierCart.setNumber(cashierCart.getNumber().add(number)); } else { cashierCart.setNumber(number); } - if (isPack.equals("false")) { - cashierCart.setPackFee(BigDecimal.ZERO); - } else { - if (!isSeatCart) { - cashierCart.setPackFee(new BigDecimal(number).multiply(product.getPackFee())); - } - } - cashierCart.setTotalAmount(new BigDecimal(cashierCart.getNumber()).multiply(skuWithBLOBs.getSalePrice()).add(cashierCart.getPackFee())); + + cashierCart.resetTotalAmount(); mpCashierCartMapper.updateById(cashierCart); } @@ -500,8 +498,7 @@ public class OrderService { return Result.fail(CodeEnum.SHOPINFONOEXIST); } - String eatModel = StrUtil.isBlank(tableId) ? ShopInfoEatModelEnum.TAKE_OUT.getValue() : ShopInfoEatModelEnum.DINE_IN.getValue(); - ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(Integer.valueOf(shopId), eatModel); + ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(Integer.valueOf(shopId), tableId); String day = DateUtils.getDay(); String finalMasterId1 = masterId; @@ -522,7 +519,7 @@ public class OrderService { List list = mpCashierCartMapper.selectList(queryWrapper); AtomicReference mealCashierCart = new AtomicReference<>(); ArrayList returnCashierCarts = new ArrayList<>(); - String orderId = null; + Integer orderId = null; for (TbCashierCart cart : list) { if (cart.getOrderId() != null) { orderId = cart.getOrderId(); @@ -531,7 +528,7 @@ public class OrderService { returnCashierCarts.add(cart); } cart.setPlaceNum(cart.getPlaceNum() == null ? 0 : cart.getPlaceNum()); - if (cart.getProductId().equals("-999")) { + if (cart.getProductId() != null && cart.getProductId().equals("-999")) { mealCashierCart.set(cart); } } @@ -543,18 +540,18 @@ public class OrderService { // mpCashierCartService.updateStateByIds(Integer.valueOf(shopId), cartIds, TableConstant.Status.CLOSED); // mpOrderDetailService.updateStateByCartIds(Integer.valueOf(shopId), cartIds, TableConstant.Status.CLOSED); mpOrderDetailService.removeByCartIds(cartIds); - if (StrUtil.isNotBlank(orderId)) { + if (orderId != null) { mpOrderInfoService.removeById(orderId); // mpOrderInfoService.updateStateById(Integer.valueOf(shopId), Integer.valueOf(orderId), TableConstant.Status.CANCELLED); } String finalMasterId = masterId; - return Result.success(CodeEnum.SUCCESS, new HashMap(){{ + return Result.success(CodeEnum.SUCCESS, new HashMap() {{ put("list", new ArrayList<>()); put("masterId", finalMasterId); put("num", 0); put("seatFee", null); - put("amount", new HashMap(){{ + put("amount", new HashMap() {{ put("packAmount", 0); put("productNum", 0); put("productSum", 0); @@ -586,7 +583,8 @@ public class OrderService { HashMap productNumMap = new HashMap<>(); for (TbCashierCart cashierCart : list) { productNumMap.putIfAbsent(cashierCart.getProductId() + cashierCart.getSkuId(), 1); - productSum += cashierCart.getNumber(); + // todo 数量为浮点数 + productSum += cashierCart.getNumber().intValue(); if (StrUtil.isNotBlank(cashierCart.getMasterId())) { masterId = cashierCart.getMasterId(); } @@ -597,18 +595,23 @@ public class OrderService { if (cashierCart.getIsPack().equals("true") && !isReturn) { packAmount = packAmount.add(cashierCart.getPackFee()); } - TbProductSkuWithBLOBs skuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getSkuId())); - if (Objects.nonNull(skuWithBLOBs)) { - cashierCart.setSkuName(skuWithBLOBs.getSpecSnap()); - } - TbProductWithBLOBs tbProduct = tbProductMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getProductId())); - if (Objects.nonNull(tbProduct)) { - cashierCart.setSelectSpec(tbProduct.getSelectSpec()); - if (tbProduct.getSpecId() != null) { - TbProductSpec tbProductSpec = tbProductSpecMapper.selectByPrimaryKey(tbProduct.getSpecId()); - cashierCart.setTbProductSpec(tbProductSpec); + + if (cashierCart.getIsTemporary() == null || cashierCart.getIsTemporary() == 0) { + TbProductSkuWithBLOBs skuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getSkuId())); + if (Objects.nonNull(skuWithBLOBs)) { + cashierCart.setSkuName(skuWithBLOBs.getSpecSnap()); + } + + TbProductWithBLOBs tbProduct = tbProductMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getProductId())); + if (Objects.nonNull(tbProduct)) { +// cashierCart.setSelectSpec(tbProduct.getSelectSpec()); + if (tbProduct.getSpecId() != null) { + TbProductSpec tbProductSpec = tbProductSpecMapper.selectByPrimaryKey(tbProduct.getSpecId()); +// cashierCart.setTbProductSpec(tbProductSpec); + } } } + } map.put("masterId", masterId); @@ -631,8 +634,7 @@ public class OrderService { return Result.fail(CARTEXIST); } - String eatModel = StrUtil.isBlank(cashierCart.getTableId()) ? ShopInfoEatModelEnum.TAKE_OUT.getValue() : ShopInfoEatModelEnum.DINE_IN.getValue(); - ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(Integer.valueOf(cashierCart.getShopId()), eatModel); + ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(Integer.valueOf(cashierCart.getShopId()), cashierCart.getTableId()); // 校验是否是代客下单往期订单 if (shopEatTypeInfoDTO.isDineInAfter() && cashierCart.getPlaceNum() != null) { @@ -643,24 +645,24 @@ public class OrderService { return Result.success(CodeEnum.SUCCESS, returnCart(dto)); } - TbProductWithBLOBs product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getProductId())); - if (ObjectUtil.isEmpty(product)) { - return Result.fail(CodeEnum.PRODUCTINFOERROR); + if (cashierCart.getIsTemporary() == null || cashierCart.getIsTemporary() == 0) { + TbProductWithBLOBs product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getProductId())); + if (ObjectUtil.isEmpty(product)) { + return Result.fail(CodeEnum.PRODUCTINFOERROR); + } + + // 数量减少, 返还库存 + String message = redisUtil.getMessage(RedisCst.ORDER_PRODUCT_NUM + cashierCart.getId()); + redisUtil.deleteByKey(RedisCst.ORDER_PRODUCT_NUM + cashierCart.getId()); + + if (message != null) { + productService.incrStock(cashierCart.getProductId(), cashierCart.getSkuId(), new BigDecimal(message)); + } } - // 数量减少, 返还库存 - String message = redisUtil.getMessage(RedisCst.ORDER_PRODUCT_NUM + cashierCart.getId()); - redisUtil.deleteByKey(RedisCst.ORDER_PRODUCT_NUM + cashierCart.getId()); - - if (message != null) { - productService.incrStock(cashierCart.getProductId(), cashierCart.getSkuId(), Integer.parseInt(message)); - } - - List skuIds = new ArrayList<>(); - skuIds.add(cashierCart.getSkuId()); cashierCartMapper.deleteByPrimaryKey(cartId); - if (StrUtil.isNotBlank(cashierCart.getOrderId()) && StrUtil.isNotBlank(cashierCart.getTableId())) { + if (cashierCart.getOrderId() != null && StrUtil.isNotBlank(cashierCart.getTableId())) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() .notIn(TbCashierCart::getStatus, "final", "refund", "closed", "pending") .eq(TbCashierCart::getShopId, cashierCart.getShopId()); @@ -684,8 +686,8 @@ public class OrderService { if (list.isEmpty()) { ThreadUtil.execute(() -> { log.info("购物车数量改变,开始校验订单是否为空"); - printMechineConsumer.printReturnTicket(Integer.valueOf(cashierCart.getOrderId()), null); - tbOrderInfoMapper.deleteByPrimaryKey(Integer.valueOf(cashierCart.getOrderId())); + printMechineConsumer.printReturnTicket(cashierCart.getOrderId(), null); + tbOrderInfoMapper.deleteByPrimaryKey(cashierCart.getOrderId()); }); } } @@ -752,11 +754,9 @@ public class OrderService { throw new MsgException("店铺信息不存在"); } + ShopEatTypeInfoDTO eatTypeInfoDTO = checkEatModel(orderVo.getShopId(), orderVo.getTableId()); - orderVo.setEatModel(StrUtil.isBlank(orderVo.getTableId()) ? ShopInfoEatModelEnum.TAKE_OUT.getValue() : ShopInfoEatModelEnum.DINE_IN.getValue()); - ShopEatTypeInfoDTO eatTypeInfoDTO = checkEatModel(orderVo.getShopId(), orderVo.getEatModel()); - - if (ShopInfoEatModelEnum.DINE_IN.getValue().equals(orderVo.getEatModel()) && StrUtil.isBlank(orderVo.getEatModel())) { + if (ShopInfoEatModelEnum.DINE_IN.getValue().equals(eatTypeInfoDTO.getUseType()) && StrUtil.isBlank(eatTypeInfoDTO.getUseType())) { throw new MsgException("店内就餐必须选择桌码"); } @@ -827,12 +827,12 @@ public class OrderService { Integer orderId = null; int cartCount = 0; for (TbCashierCart cart : list) { - if (StrUtil.isNotBlank(cart.getOrderId())) { - orderId = Integer.valueOf(cart.getOrderId()); + if (cart.getOrderId() != null) { + orderId = cart.getOrderId(); } cashierIds.add(cart.getId()); if ("-999".equals(cart.getProductId())) { - mealNum = cart.getNumber(); + mealNum = cart.getNumber().intValue(); } if (TableConstant.OrderInfo.Status.CREATE.equalsVals(cart.getStatus()) && !TableConstant.CashierCart.ID.equals(cart.getProductId())) { @@ -874,24 +874,24 @@ public class OrderService { } TbOrderDetail orderDetail = null; - if (StrUtil.isNotBlank(cashierCart.getOrderId())) { - orderDetail = oldOrderDetailMap.get(cashierCart.getOrderId() + cashierCart.getId()); + if (cashierCart.getOrderId() != null) { + orderDetail = oldOrderDetailMap.get(cashierCart.getOrderId().toString() + cashierCart.getId()); } if (orderDetail == null) { orderDetail = new TbOrderDetail(); // 已经加入修改了库存数量,返还或减少库存 addOrderDetailList.add(orderDetail); - if (!TableConstant.CART_SEAT_ID.equals(cashierCart.getProductId())) { + if (!TableConstant.CART_SEAT_ID.equals(cashierCart.getProductId()) && cashierCart.getIsTemporary() == 0) { productService.decrStock(cashierCart.getProductId(), cashierCart.getSkuId(), cashierCart.getNumber()); } } else { - if (!TableConstant.CART_SEAT_ID.equals(cashierCart.getProductId())) { - int subVal = cashierCart.getNumber() - orderDetail.getNum(); + if (!TableConstant.CART_SEAT_ID.equals(cashierCart.getProductId()) && cashierCart.getIsTemporary() == 0) { + BigDecimal subVal = cashierCart.getNumber().subtract(orderDetail.getNum()); // 减少了数量 - if (subVal < 0) { - productService.incrStock(cashierCart.getProductId(), cashierCart.getSkuId(), Math.abs(subVal)); - } else if (subVal > 0) { + if (subVal.compareTo(BigDecimal.ZERO) < 0) { + productService.incrStock(cashierCart.getProductId(), cashierCart.getSkuId(), subVal.abs()); + } else if (subVal.compareTo(BigDecimal.ZERO) > 0) { productService.decrStock(cashierCart.getProductId(), cashierCart.getSkuId(), subVal); } } @@ -900,22 +900,26 @@ public class OrderService { if (orderDetail.getPlaceNum() == null) { orderDetail.setPlaceNum(currentPlaceNum); } - - TbProductWithBLOBs product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getProductId())); - if ("takeaway".equals(orderVo.getSendType()) || "takeself".equals(orderVo.getSendType())) { - if (Objects.nonNull(product.getPackFee())) { - packAMount = packAMount.add(product.getPackFee()); - orderDetail.setPackAmount(product.getPackFee()); + TbProductSkuWithBLOBs tbProduct = null; + TbProductWithBLOBs product = null; + if (cashierCart.getIsTemporary() == 0) { + product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getProductId())); + if ("takeaway".equals(orderVo.getSendType()) || "takeself".equals(orderVo.getSendType())) { + if (Objects.nonNull(product.getPackFee())) { + packAMount = packAMount.add(product.getPackFee()); + orderDetail.setPackAmount(product.getPackFee()); + } } + tbProduct = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getSkuId())); + if (Objects.nonNull(tbProduct)) { + saleAmount = saleAmount.add(tbProduct.getSalePrice()); + } + orderDetail.setProductSkuName(tbProduct == null ? null : tbProduct.getSpecSnap()); } - TbProductSkuWithBLOBs tbProduct = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getSkuId())); totalAmount = totalAmount.add(cashierCart.getTotalAmount()); - feeAmount = cashierCart.getPackFee(); - if (Objects.nonNull(tbProduct)) { - saleAmount = saleAmount.add(tbProduct.getSalePrice()); - } + if (TableConstant.CART_SEAT_ID.equals(cashierCart.getProductId())) { saleAmount = saleAmount.add(shopInfo.getTableFee()); @@ -926,17 +930,18 @@ public class OrderService { orderDetail.setNum(cashierCart.getNumber()); orderDetail.setPrice(cashierCart.getSalePrice()); orderDetail.setPriceAmount(cashierCart.getTotalAmount()); - orderDetail.setProductId(Integer.valueOf(cashierCart.getProductId())); - orderDetail.setProductSkuId(Integer.valueOf(cashierCart.getSkuId())); - orderDetail.setProductSkuName(tbProduct == null ? null : tbProduct.getSpecSnap()); + if (cashierCart.getIsTemporary() == 0) { + orderDetail.setProductId(Integer.valueOf(cashierCart.getProductId())); + orderDetail.setProductSkuId(Integer.valueOf(cashierCart.getSkuId())); + } orderDetail.setProductName(cashierCart.getName()); orderDetail.setShopId(orderVo.getShopId()); orderDetail.setStatus("unpaid"); orderDetail.setProductImg(cashierCart.getCoverImg()); orderDetail.setUseType(cashierCart.getUseType()); orderDetail.setCartId(cashierCart.getId()); - if (StringUtils.isNotEmpty(cashierCart.getOrderId())) { - orderId = Integer.valueOf(cashierCart.getOrderId()); + if (cashierCart.getOrderId() != null) { + orderId = cashierCart.getOrderId(); } orderDetail.setIsMember(cashierCart.getIsMember()); @@ -944,8 +949,11 @@ public class OrderService { // 库存预警校验 - if (TableConstant.CART_SEAT_ID.equals(cashierCart.getProductId())) { - CompletableFuture.runAsync(() -> checkWarnLineAndSendMsg(tbProduct, product, Integer.valueOf(cashierCart.getShopId()), cashierCart.getNumber())); + if (TableConstant.CART_SEAT_ID.equals(cashierCart.getProductId()) && cashierCart.getIsTemporary() == 0) { + // todo 修改为bigdecimal + TbProductSkuWithBLOBs finalTbProduct = tbProduct; + TbProductWithBLOBs finalProduct = product; + CompletableFuture.runAsync(() -> checkWarnLineAndSendMsg(finalTbProduct, finalProduct, Integer.valueOf(cashierCart.getShopId()), cashierCart.getNumber().intValue())); } } @@ -1271,10 +1279,10 @@ public class OrderService { for (TbCashierCart cashierCart : list) { TbProductWithBLOBs product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getProductId())); if ("true".equals(cartVo.getStatus())) { - cashierCart.setTotalAmount(new BigDecimal(cashierCart.getTotalNumber()).multiply(cashierCart.getSalePrice().add(product.getPackFee()))); - cashierCart.setPackFee(new BigDecimal(cashierCart.getTotalNumber()).multiply(product.getPackFee())); + cashierCart.setTotalAmount(cashierCart.getTotalNumber().multiply(cashierCart.getSalePrice().add(product.getPackFee()))); + cashierCart.setPackFee(cashierCart.getTotalNumber().multiply(product.getPackFee())); } else { - cashierCart.setTotalAmount(new BigDecimal(cashierCart.getTotalNumber()).multiply(cashierCart.getSalePrice())); + cashierCart.setTotalAmount(cashierCart.getTotalNumber().multiply(cashierCart.getSalePrice())); cashierCart.setPackFee(BigDecimal.ZERO); } cashierCart.setIsPack(cartVo.getStatus()); @@ -1287,8 +1295,7 @@ public class OrderService { @Transactional(rollbackFor = Exception.class) public Result clearCart(CartVo cartVo) { String day = DateUtils.getDay(); - String eatModel = StrUtil.isBlank(cartVo.getTableId()) ? ShopInfoEatModelEnum.TAKE_OUT.getValue() : ShopInfoEatModelEnum.DINE_IN.getValue(); - ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(cartVo.getShopId(), eatModel); + ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(cartVo.getShopId(), cartVo.getTableId()); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() .eq(TbCashierCart::getShopId, cartVo.getShopId()) @@ -1321,8 +1328,8 @@ public class OrderService { ArrayList ids = new ArrayList<>(); TbCashierCart cart = null; for (TbCashierCart cashierCart : list) { - if (StrUtil.isNotBlank(cashierCart.getOrderId())) { - orderId = Integer.parseInt(cashierCart.getOrderId()); + if (cashierCart.getOrderId() != null) { + orderId = cashierCart.getOrderId(); cart = cashierCart; } @@ -1331,7 +1338,7 @@ public class OrderService { String message = redisUtil.getMessage(RedisCst.ORDER_PRODUCT_NUM + cashierCart.getId()); redisUtil.deleteByKey(RedisCst.ORDER_PRODUCT_NUM + cashierCart.getId()); if (message != null) { - productService.incrStock(cashierCart.getProductId(), cashierCart.getSkuId(), Integer.parseInt(message)); + productService.incrStock(cashierCart.getProductId(), cashierCart.getSkuId(), new BigDecimal(message)); } } @@ -1493,7 +1500,7 @@ public class OrderService { TbOrderDetail orderDetail = orderDetailMapper.selectByOrderIdAndSkuId(orderId, Integer.valueOf(cashierCart.getSkuId())); if (Objects.nonNull(orderDetail)) { - orderDetail.setNum(orderDetail.getNum() + cashierCart.getNumber()); + orderDetail.setNum(orderDetail.getNum().add(cashierCart.getNumber())); orderDetail.setPriceAmount(orderDetail.getPriceAmount().add(cashierCart.getTotalAmount())); orderDetail.setPackAmount(orderDetail.getPackAmount().add(cashierCart.getPackFee())); modityOrderDetails.add(orderDetail); @@ -1512,8 +1519,8 @@ public class OrderService { orderDetail.setStatus("unpaid"); orderDetail.setProductImg(cashierCart.getCoverImg()); masterId = cashierCart.getMasterId(); - if (StringUtils.isNotEmpty(cashierCart.getOrderId())) { - orderId = Integer.valueOf(cashierCart.getOrderId()); + if (cashierCart.getOrderId() != null) { + orderId = cashierCart.getOrderId(); } } orderDetails.add(orderDetail); @@ -1571,10 +1578,10 @@ public class OrderService { } boolean flag = true; for (TbCashierCart cashierCart : list) { - if (StringUtils.isNotEmpty(cashierCart.getOrderId())) { + if (cashierCart.getOrderId() != null) { flag = false; } - cashierCart.setOrderId(orderId + ""); + cashierCart.setOrderId(orderId); cashierCart.setStatus("closed"); cashierCart.setUpdatedAt(System.currentTimeMillis()); cashierCartMapper.updateByPrimaryKeySelective(cashierCart); @@ -1835,7 +1842,7 @@ public class OrderService { public Object choseCount(ChoseCountDTO choseCountDTO) { return Utils.runFunAndCheckKey(() -> { - ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(choseCountDTO.getShopId(), ShopInfoEatModelEnum.DINE_IN.getValue()); + ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(choseCountDTO.getShopId(), "八嘎"); TbShopInfo shopInfo = tbShopInfoMapper.selectByPrimaryKey(choseCountDTO.getShopId()); if (shopInfo == null) throw new NotPrintException("店铺信息不存在"); @@ -1880,15 +1887,15 @@ public class OrderService { tbCashierCart.setProductId("-999"); tbCashierCart.setSkuId("-999"); tbCashierCart.setPackFee(BigDecimal.ZERO); - tbCashierCart.setNumber(choseCountDTO.getNum()); - tbCashierCart.setTotalNumber(choseCountDTO.getNum()); + tbCashierCart.setNumber(BigDecimal.valueOf(choseCountDTO.getNum())); + tbCashierCart.setTotalNumber(BigDecimal.valueOf(choseCountDTO.getNum())); tbCashierCart.setPlatformType(OrderPlatformTypeEnum.CASH.getValue()); tbCashierCart.setUseType(shopEatTypeInfoDTO.getUseType()); mpCashierCartMapper.insert(tbCashierCart); } else { tbCashierCart.setTotalAmount(new BigDecimal(choseCountDTO.getNum()).multiply(shopInfo.getTableFee())); - tbCashierCart.setNumber(choseCountDTO.getNum()); - tbCashierCart.setTotalNumber(choseCountDTO.getNum()); + tbCashierCart.setNumber(BigDecimal.valueOf(choseCountDTO.getNum())); + tbCashierCart.setTotalNumber(BigDecimal.valueOf(choseCountDTO.getNum())); mpCashierCartMapper.updateById(tbCashierCart); } @@ -2025,4 +2032,64 @@ public class OrderService { .set(TbShopTable::getUpdatedAt, System.currentTimeMillis()) ); } + + + /** + * 临时菜添加 + * + * @param temporaryDishesDTO 临时菜信息 + */ + public Object addTemporaryDishes(AddTemporaryDishesDTO temporaryDishesDTO) { + ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(temporaryDishesDTO.getShopId(), temporaryDishesDTO.getTableId()); + + TbCashierCart tbCashierCart = mpCashierCartService.selectOneCartByShopEatType(shopEatTypeInfoDTO, temporaryDishesDTO.getMasterId(), null, null, false, true); + // 首次加入 + if (tbCashierCart == null) { + tbCashierCart = new TbCashierCart(); + tbCashierCart.setUseType(shopEatTypeInfoDTO.getUseType()); + tbCashierCart.setCreatedAt(System.currentTimeMillis()); + tbCashierCart.setIsSku("0"); + if (StrUtil.isNotBlank(shopEatTypeInfoDTO.getTableId())) { + tbCashierCart.setTableId(shopEatTypeInfoDTO.getTableId()); + } + tbCashierCart.setName(temporaryDishesDTO.getName()); + tbCashierCart.setSalePrice(temporaryDishesDTO.getPrice()); + tbCashierCart.setMasterId(temporaryDishesDTO.getMasterId()); + tbCashierCart.setShopId(String.valueOf(temporaryDishesDTO.getShopId())); + tbCashierCart.setTradeDay(DateUtils.getDay()); + tbCashierCart.setStatus("create"); + tbCashierCart.setIsPack("false"); + tbCashierCart.setIsGift("false"); + tbCashierCart.setTotalAmount(temporaryDishesDTO.getNum().multiply(temporaryDishesDTO.getPrice())); + tbCashierCart.setPackFee(BigDecimal.ZERO); + tbCashierCart.setTotalNumber(temporaryDishesDTO.getNum()); + tbCashierCart.setNumber(temporaryDishesDTO.getNum()); + tbCashierCart.setCategoryId(String.valueOf(temporaryDishesDTO.getCategoryId())); + tbCashierCart.setNote(temporaryDishesDTO.getNote()); + tbCashierCart.setPlatformType(OrderPlatformTypeEnum.PC.getValue()); + tbCashierCart.setIsMember(shopEatTypeInfoDTO.isMemberPrice() && temporaryDishesDTO.getVipUserId() != null ? 1 : 0); + tbCashierCart.setIsTemporary(1); + tbCashierCart.setUnit(temporaryDishesDTO.getUnit()); + mpCashierCartService.save(tbCashierCart); + + } else { + tbCashierCart.setIsMember(temporaryDishesDTO.getVipUserId() == null ? 0 : 1); + tbCashierCart.setNote(temporaryDishesDTO.getNote()); + tbCashierCart.setTotalAmount(temporaryDishesDTO.getNum().multiply(temporaryDishesDTO.getPrice())); + tbCashierCart.setPackFee(BigDecimal.ZERO); + tbCashierCart.setIsPack("false"); + tbCashierCart.setIsGift("false"); + tbCashierCart.setTotalNumber(temporaryDishesDTO.getNum()); + tbCashierCart.setNumber(temporaryDishesDTO.getNum()); + tbCashierCart.setUpdatedAt(DateUtil.date().getTime()); + tbCashierCart.setIsTemporary(1); + tbCashierCart.setUnit(temporaryDishesDTO.getUnit()); + mpCashierCartService.updateById(tbCashierCart); + } + + if (StrUtil.isNotBlank(temporaryDishesDTO.getTableId())) { + setRedisTableCartInfo(temporaryDishesDTO.getTableId(), temporaryDishesDTO.getShopId().toString(), Collections.singletonList(tbCashierCart), true); + } + return tbCashierCart; + } } 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 8dffbe3..181aa24 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java @@ -1151,313 +1151,314 @@ public class PayService { @Transactional(rollbackFor = Exception.class) public Result returnOrder(List list, String token, String pwd, boolean isOnline) { - if (ObjectUtil.isEmpty(list) || list.size() <= 0) { - return Result.fail(CodeEnum.PARAM); - } - - - Integer orderId = list.get(0).getOrderId(); - - String remark = list.get(0).getRemark(); - - TbOrderInfo orderInfo = tbOrderInfoMapper.selectByPrimaryKey(orderId); - if (ObjectUtil.isEmpty(orderInfo) || orderInfo.getStatus().equals("refund")) { - return Result.fail(CodeEnum.ORDERSTATUSERROR); - } - - - TbShopInfo shopInfo = tbShopInfoMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getShopId())); - - - if ("1".equals(shopInfo.getIsReturn())) { - if (ObjectUtil.isEmpty(pwd)) { - return Result.fail(CodeEnum.PARAM); - } - String accountId = TokenUtil.parseParamFromToken(token).getString("accountId"); - - TbmerchantAccount account = tbmerchantAccountMapper.selectByPrimaryKey(Integer.valueOf(accountId)); - if (Objects.isNull(account)) { - return Result.fail(CodeEnum.ACCOUNTEIXST); - } - if (Objects.isNull(account.getPwd()) || ObjectUtil.isEmpty(account.getPwd())) { - return Result.fail(CodeEnum.PWDNOSET); - } - if (!account.getPwd().equals(MD5Util.encrypt(pwd.concat(account.getAccount()).concat(account.getId().toString())))) { - return Result.fail(CodeEnum.PWDERROE); - } - } - - List orderDetails = tbOrderDetailMapper.selectAllByOrderIdAndStatus(list, orderId.toString()); - - - String merchantId = orderInfo.getMerchantId(); - String shopId = orderInfo.getShopId(); - String day = DateUtils.getDay(); - String masterId = orderInfo.getMasterId(); - String payType = orderInfo.getPayType(); - String orderNo = generateReturnOrderNumber(); - if (!isOnline) { - orderNo = "XX" + orderNo; - } - BigDecimal orderAmount = orderInfo.getPayAmount(); - - - BigDecimal totalAmount = BigDecimal.ZERO; - BigDecimal packAMount = BigDecimal.ZERO; - BigDecimal saleAmount = BigDecimal.ZERO; - BigDecimal feeAmount = BigDecimal.ZERO; - BigDecimal payAmount = BigDecimal.ZERO; - - List detailPos = new ArrayList<>(); -// //判断是否全量退款 -// if(list.size()==orderDetails.size()){ -// //修改主单状态 -// orderInfo.setStatus("rhandoverprintDataefund"); -// orderInfo.setUpdatedAt(System.currentTimeMillis()); -// tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo); +// if (ObjectUtil.isEmpty(list) || list.size() <= 0) { +// return Result.fail(CodeEnum.PARAM); // } - - List returnDetail = new ArrayList<>(); - -// List details=new ArrayList<>(); - - Map map1 = new HashMap<>(); - for (TbOrderDetail orderDetail : list) { - if (Objects.isNull(orderDetail.getNum())) { - map1.put(orderDetail.getId(), 0); - } else { - map1.put(orderDetail.getId(), orderDetail.getNum()); - } - } - for (TbOrderDetail it : orderDetails) { - it = tbOrderDetailMapper.selectByPrimaryKey(it.getId()); - if (it.getStatus().equals("closed")) { - if (it.getStatus().equals("refund")) { - continue; - } - if (map1.get(it.getId()) > it.getNum() - it.getReturnNum()) { - return Result.fail("可退数量:" + (it.getNum() - it.getReturnNum())); - } - if (map1.get(it.getId()) == 0) { - map1.put(it.getId(), it.getNum()); - } - OrderDetailPo detailPo = new OrderDetailPo(); -// totalAmount = totalAmount.add(it.getPriceAmount()); - totalAmount = totalAmount.add(it.getPriceAmount().divide(new BigDecimal(it.getNum()), 2, RoundingMode.DOWN).multiply(new BigDecimal(map1.get(it.getId())))); - saleAmount = saleAmount.add(it.getPrice()); - - payAmount = payAmount.add(it.getPriceAmount().divide(new BigDecimal(it.getNum()), 2, RoundingMode.DOWN) - .multiply(new BigDecimal(map1.get(it.getId())))); // -// payAmount=payAmount.add(it.getPriceAmount()); - packAMount = packAMount.add(it.getPackAmount().divide(new BigDecimal(it.getNum()), 2, RoundingMode.DOWN).multiply(new BigDecimal(map1.get(it.getId())))); - - detailPo.setId(it.getId()); - if (map1.get(it.getId()) + it.getReturnNum() >= it.getNum()) { - detailPo.setStatus("refund"); - } else { - detailPo.setStatus("closed"); - - } - BigDecimal returnAmount = it.getPriceAmount().divide(new BigDecimal(it.getNum()), 2, RoundingMode.DOWN).multiply(new BigDecimal(map1.get(it.getId()))); - - detailPo.setReturnNum(map1.get(it.getId())); - detailPos.add(detailPo); - it.setNum(map1.get(it.getId())); - it.setReturnNum(0); - it.setPriceAmount(returnAmount); - it.setStatus("closed"); - it.setCreateTime(new Date()); - it.setUpdateTime(null); - returnDetail.add(it); - -// details.add(new ReturnWTZInfo.ReturnDetail(it.getId()+"",it.getProductSkuId()+"",it.getNum()+"")); - } - } - - - TbOrderInfo newOrderInfo = new TbOrderInfo(orderNo, totalAmount, packAMount, totalAmount, saleAmount, totalAmount, feeAmount, orderInfo.getTableId(), - "table", "return", merchantId, shopId, - "", (byte) 1, day, masterId, "refund", payAmount, orderInfo.getPayType(), orderInfo.getTableName()); - - // 线上退款 - if (isOnline) { - if ("scanCode".equals(payType) || "wx_lite".equals(payType)) { - TbMerchantThirdApply thirdApply = tbMerchantThirdApplyMapper.selectByPrimaryKey(Integer.valueOf(merchantId)); - MsgException.checkNull(thirdApply, "支付参数配置错误"); - - if ("ysk".equals(thirdPayType)) { - ReturnOrderReq req = new ReturnOrderReq(); - req.setAppId(thirdApply.getAppId()); - req.setTimestamp(System.currentTimeMillis()); - req.setOrderNumber(orderInfo.getPayOrderNo()); - req.setAmount(String.format("%.2f", newOrderInfo.getPayAmount().setScale(2, RoundingMode.DOWN))); - req.setMercRefundNo(orderInfo.getOrderNo()); - req.setRefundReason("退货"); - req.setPayPassword(thirdApply.getPayPassword()); - Map map = BeanUtil.transBean2Map(req); - req.setSign(MD5Util.encrypt(map, thirdApply.getAppToken(), true)); - log.info("merchantOrderReturn req:{}", JSONUtil.toJsonStr(req)); - ResponseEntity response = restTemplate.postForEntity(gateWayUrl.concat("merchantOrder/returnOrder"), req, String.class); - log.info("merchantOrderReturn:{}", response.getBody()); - if (response.getStatusCodeValue() == 200 && ObjectUtil.isNotEmpty(response.getBody())) { - JSONObject object = JSONObject.parseObject(response.getBody()); - if (!object.get("code").equals("0")) { - MsgException.check(true, "退款渠道调用失败"); - } -// newOrderInfo.setPayOrderNo(object.getJSONObject("data").getString("refundOrderNumber")); - } - } else { - - TbOrderPayment payment = tbOrderPaymentMapper.selectByOrderId(String.valueOf(orderId)); - PublicResp publicResp = thirdPayService.returnOrder(url, thirdApply.getAppId(), - newOrderInfo.getOrderNo(), payment.getTradeNumber(), null, "订单退款", - newOrderInfo.getPayAmount().setScale(2, RoundingMode.DOWN).multiply(new BigDecimal(100)).longValue(), callBack, null, thirdApply.getAppToken()); - - if (ObjectUtil.isNotNull(publicResp) && ObjectUtil.isNotEmpty(publicResp)) { - if ("000000".equals(publicResp.getCode())) { - if (!"SUCCESS".equals(publicResp.getObjData().getState()) && !publicResp.getObjData().getState().equals("ING")) { - MsgException.check(true, "退款渠道调用失败"); - } - } else { - MsgException.check(true, "退款渠道调用失败"); - } - } - - } - - } else if ("deposit".equals(payType)) { - TbShopUser user = tbShopUserMapper.selectByUserIdAndShopId(orderInfo.getUserId(), orderInfo.getShopId()); - if (ObjectUtil.isNull(user) || ObjectUtil.isEmpty(user)) { - user = tbShopUserMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getMemberId())); - } - - - if (ObjectUtil.isNull(user) || ObjectUtil.isEmpty(user)) { - return Result.fail(ACCOUNTEIXST); - } - - if (!user.getShopId().equals(orderInfo.getShopId())) { - return Result.fail(ACCOUNTEIXST); - } - - - newOrderInfo.setMemberId(orderInfo.getMemberId()); - newOrderInfo.setUserId(orderInfo.getUserId()); - - user.setAmount(user.getAmount().add(newOrderInfo.getPayAmount().setScale(2, RoundingMode.DOWN))); - user.setConsumeAmount(user.getConsumeAmount().subtract(newOrderInfo.getPayAmount().setScale(2, RoundingMode.DOWN))); - user.setUpdatedAt(System.currentTimeMillis()); - tbShopUserMapper.updateByPrimaryKeySelective(user); - - - TbShopUserFlow flow = new TbShopUserFlow(); - flow.setShopUserId(user.getId()); - flow.setBizCode("accountReturnPay"); - flow.setBizName("会员储值卡退款"); - flow.setType("+"); - flow.setAmount(newOrderInfo.getPayAmount()); - flow.setBalance(user.getAmount()); - flow.setCreateTime(new Date()); - flow.setIsReturn("0"); - tbShopUserFlowMapper.insert(flow); - - - JSONObject baObj = new JSONObject(); - baObj.put("userId", user.getUserId()); - baObj.put("shopId", user.getShopId()); - baObj.put("amount", newOrderInfo.getPayAmount()); - baObj.put("balance", user.getAmount()); - baObj.put("type", "退款"); - baObj.put("time", flow.getCreateTime()); - producer.balance(baObj.toString()); - - } - } - - //判断是否修改主单状态 - BigDecimal returnAmount = tbOrderDetailMapper.selectByOrderId(orderId.toString()); - if (N.egt(returnAmount.add(payAmount), orderAmount)) { - orderInfo.setStatus("refund"); - } - - - orderInfo.setRemark(remark); - orderInfo.setUpdatedAt(System.currentTimeMillis()); - tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo); - - //添加退单数据 - newOrderInfo.setSource(orderId); - tbOrderInfoMapper.insert(newOrderInfo); - - //更新子单表 - if (ObjectUtil.isNotEmpty(detailPos) && detailPos.size() > 0) { - tbOrderDetailMapper.updateBatchOrderDetail(detailPos); - } - - //添加子表信息 - if (ObjectUtil.isNotEmpty(returnDetail) && returnDetail.size() > 0) { - tbOrderDetailMapper.batchInsert(returnDetail, newOrderInfo.getId().toString()); - } - - - JSONObject jsonObject = new JSONObject(); - jsonObject.put("token", token); - jsonObject.put("type", "return"); - jsonObject.put("orderId", 0); - jsonObject.put("amount", newOrderInfo.getPayAmount()); -// jsonObject.put("data",new ReturnWTZInfo(orderId+"",newOrderInfo.getPayAmount(),details)); - producer.putOrderCollect(jsonObject.toJSONString()); - - - producer.printMechine(newOrderInfo.getId().toString()); - - - //修改耗材数据 - JSONObject jsonObject1 = new JSONObject(); - jsonObject1.put("orderId", newOrderInfo.getId()); - jsonObject1.put("type", "delete"); - producer.cons(jsonObject1.toString()); - - // 更新商品库存 - for (TbOrderDetail detail : returnDetail) { - detail = tbOrderDetailMapper.selectByPrimaryKey(detail.getId()); - - TbProductSku productSku = productSkuMapper.selectByPrimaryKey(detail.getProductSkuId()); - TbProductWithBLOBs product = productMapper.selectByPrimaryKey(detail.getProductId()); - - TbProductStockDetail tbProductStockDetail = new TbProductStockDetail(); - tbProductStockDetail.setCreatedAt(System.currentTimeMillis()); - tbProductStockDetail.setUpdatedAt(System.currentTimeMillis()); - tbProductStockDetail.setShopId(detail.getShopId().toString()); - tbProductStockDetail.setSourcePath("NORMAL"); - tbProductStockDetail.setType("退单"); - tbProductStockDetail.setSubType((byte) 1); - tbProductStockDetail.setRemark("退单: " + detail.getOrderId()); - tbProductStockDetail.setOrderId(String.valueOf(detail.getOrderId())); - - if (ObjectUtil.isNotEmpty(product)) { - TbShopUnit shopUnit = shopUnitMapper.selectByPrimaryKey(Integer.valueOf(product.getUnitId())); - - tbProductStockDetail.setProductName(product.getName()); - tbProductStockDetail.setIsStock(product.getIsStock()); - tbProductStockDetail.setStockSnap(product.getSelectSpec()); - tbProductStockDetail.setUnitName(shopUnit.getName()); - tbProductStockDetail.setProductId(product.getId().toString()); - - productMapper.updateStockById(product.getId(), detail.getReturnNum() * -1); - - tbProductStockDetail.setLeftNumber(product.getStockNumber()); - tbProductStockDetail.setStockNumber(Double.valueOf(detail.getReturnNum())); - productSkuMapper.decrRealSalesNumber(productSku.getId(), detail.getReturnNum()); - } - - productStockDetailMapper.insert(tbProductStockDetail); - } - redisUtil.del("SHOP:CODE:USER:" + "pc" + ":" + orderInfo.getShopId() + ":" + DateUtils.getDay() + TokenUtil.parseParamFromToken(token).getString("accountId")); - - - return Result.success(CodeEnum.SUCCESS); +// +// Integer orderId = list.get(0).getOrderId(); +// +// String remark = list.get(0).getRemark(); +// +// TbOrderInfo orderInfo = tbOrderInfoMapper.selectByPrimaryKey(orderId); +// if (ObjectUtil.isEmpty(orderInfo) || orderInfo.getStatus().equals("refund")) { +// return Result.fail(CodeEnum.ORDERSTATUSERROR); +// } +// +// +// TbShopInfo shopInfo = tbShopInfoMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getShopId())); +// +// +// if ("1".equals(shopInfo.getIsReturn())) { +// if (ObjectUtil.isEmpty(pwd)) { +// return Result.fail(CodeEnum.PARAM); +// } +// String accountId = TokenUtil.parseParamFromToken(token).getString("accountId"); +// +// TbmerchantAccount account = tbmerchantAccountMapper.selectByPrimaryKey(Integer.valueOf(accountId)); +// if (Objects.isNull(account)) { +// return Result.fail(CodeEnum.ACCOUNTEIXST); +// } +// if (Objects.isNull(account.getPwd()) || ObjectUtil.isEmpty(account.getPwd())) { +// return Result.fail(CodeEnum.PWDNOSET); +// } +// if (!account.getPwd().equals(MD5Util.encrypt(pwd.concat(account.getAccount()).concat(account.getId().toString())))) { +// return Result.fail(CodeEnum.PWDERROE); +// } +// } +// +// List orderDetails = tbOrderDetailMapper.selectAllByOrderIdAndStatus(list, orderId.toString()); +// +// +// String merchantId = orderInfo.getMerchantId(); +// String shopId = orderInfo.getShopId(); +// String day = DateUtils.getDay(); +// String masterId = orderInfo.getMasterId(); +// String payType = orderInfo.getPayType(); +// String orderNo = generateReturnOrderNumber(); +// if (!isOnline) { +// orderNo = "XX" + orderNo; +// } +// BigDecimal orderAmount = orderInfo.getPayAmount(); +// +// +// BigDecimal totalAmount = BigDecimal.ZERO; +// BigDecimal packAMount = BigDecimal.ZERO; +// BigDecimal saleAmount = BigDecimal.ZERO; +// BigDecimal feeAmount = BigDecimal.ZERO; +// BigDecimal payAmount = BigDecimal.ZERO; +// +// List detailPos = new ArrayList<>(); +//// //判断是否全量退款 +//// if(list.size()==orderDetails.size()){ +//// //修改主单状态 +//// orderInfo.setStatus("rhandoverprintDataefund"); +//// orderInfo.setUpdatedAt(System.currentTimeMillis()); +//// tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo); +//// } +// +// List returnDetail = new ArrayList<>(); +// +//// List details=new ArrayList<>(); +// +// Map map1 = new HashMap<>(); +// for (TbOrderDetail orderDetail : list) { +// if (Objects.isNull(orderDetail.getNum())) { +// map1.put(orderDetail.getId(), 0); +// } else { +// map1.put(orderDetail.getId(), orderDetail.getNum()); +// } +// } +// for (TbOrderDetail it : orderDetails) { +// it = tbOrderDetailMapper.selectByPrimaryKey(it.getId()); +// if (it.getStatus().equals("closed")) { +// if (it.getStatus().equals("refund")) { +// continue; +// } +// if (map1.get(it.getId()).compareTo(it.getNum().subtract(it.getReturnNum())) < 0) { +// return Result.fail("可退数量:" + (it.getNum().subtract(it.getReturnNum()))); +// } +// if (map1.get(it.getId()) == 0) { +// map1.put(it.getId(), it.getNum()); +// } +// OrderDetailPo detailPo = new OrderDetailPo(); +//// totalAmount = totalAmount.add(it.getPriceAmount()); +// totalAmount = totalAmount.add(it.getPriceAmount().divide(new BigDecimal(it.getNum()), 2, RoundingMode.DOWN).multiply(new BigDecimal(map1.get(it.getId())))); +// saleAmount = saleAmount.add(it.getPrice()); +// +// payAmount = payAmount.add(it.getPriceAmount().divide(new BigDecimal(it.getNum()), 2, RoundingMode.DOWN) +// .multiply(new BigDecimal(map1.get(it.getId())))); +//// +//// payAmount=payAmount.add(it.getPriceAmount()); +// packAMount = packAMount.add(it.getPackAmount().divide(new BigDecimal(it.getNum()), 2, RoundingMode.DOWN).multiply(new BigDecimal(map1.get(it.getId())))); +// +// detailPo.setId(it.getId()); +// if (map1.get(it.getId()) + it.getReturnNum() >= it.getNum()) { +// detailPo.setStatus("refund"); +// } else { +// detailPo.setStatus("closed"); +// +// } +// BigDecimal returnAmount = it.getPriceAmount().divide(new BigDecimal(it.getNum()), 2, RoundingMode.DOWN).multiply(new BigDecimal(map1.get(it.getId()))); +// +// detailPo.setReturnNum(map1.get(it.getId())); +// detailPos.add(detailPo); +// it.setNum(map1.get(it.getId())); +// it.setReturnNum(0); +// it.setPriceAmount(returnAmount); +// it.setStatus("closed"); +// it.setCreateTime(new Date()); +// it.setUpdateTime(null); +// returnDetail.add(it); +// +//// details.add(new ReturnWTZInfo.ReturnDetail(it.getId()+"",it.getProductSkuId()+"",it.getNum()+"")); +// } +// } +// +// +// TbOrderInfo newOrderInfo = new TbOrderInfo(orderNo, totalAmount, packAMount, totalAmount, saleAmount, totalAmount, feeAmount, orderInfo.getTableId(), +// "table", "return", merchantId, shopId, +// "", (byte) 1, day, masterId, "refund", payAmount, orderInfo.getPayType(), orderInfo.getTableName()); +// +// // 线上退款 +// if (isOnline) { +// if ("scanCode".equals(payType) || "wx_lite".equals(payType)) { +// TbMerchantThirdApply thirdApply = tbMerchantThirdApplyMapper.selectByPrimaryKey(Integer.valueOf(merchantId)); +// MsgException.checkNull(thirdApply, "支付参数配置错误"); +// +// if ("ysk".equals(thirdPayType)) { +// ReturnOrderReq req = new ReturnOrderReq(); +// req.setAppId(thirdApply.getAppId()); +// req.setTimestamp(System.currentTimeMillis()); +// req.setOrderNumber(orderInfo.getPayOrderNo()); +// req.setAmount(String.format("%.2f", newOrderInfo.getPayAmount().setScale(2, RoundingMode.DOWN))); +// req.setMercRefundNo(orderInfo.getOrderNo()); +// req.setRefundReason("退货"); +// req.setPayPassword(thirdApply.getPayPassword()); +// Map map = BeanUtil.transBean2Map(req); +// req.setSign(MD5Util.encrypt(map, thirdApply.getAppToken(), true)); +// log.info("merchantOrderReturn req:{}", JSONUtil.toJsonStr(req)); +// ResponseEntity response = restTemplate.postForEntity(gateWayUrl.concat("merchantOrder/returnOrder"), req, String.class); +// log.info("merchantOrderReturn:{}", response.getBody()); +// if (response.getStatusCodeValue() == 200 && ObjectUtil.isNotEmpty(response.getBody())) { +// JSONObject object = JSONObject.parseObject(response.getBody()); +// if (!object.get("code").equals("0")) { +// MsgException.check(true, "退款渠道调用失败"); +// } +//// newOrderInfo.setPayOrderNo(object.getJSONObject("data").getString("refundOrderNumber")); +// } +// } else { +// +// TbOrderPayment payment = tbOrderPaymentMapper.selectByOrderId(String.valueOf(orderId)); +// PublicResp publicResp = thirdPayService.returnOrder(url, thirdApply.getAppId(), +// newOrderInfo.getOrderNo(), payment.getTradeNumber(), null, "订单退款", +// newOrderInfo.getPayAmount().setScale(2, RoundingMode.DOWN).multiply(new BigDecimal(100)).longValue(), callBack, null, thirdApply.getAppToken()); +// +// if (ObjectUtil.isNotNull(publicResp) && ObjectUtil.isNotEmpty(publicResp)) { +// if ("000000".equals(publicResp.getCode())) { +// if (!"SUCCESS".equals(publicResp.getObjData().getState()) && !publicResp.getObjData().getState().equals("ING")) { +// MsgException.check(true, "退款渠道调用失败"); +// } +// } else { +// MsgException.check(true, "退款渠道调用失败"); +// } +// } +// +// } +// +// } else if ("deposit".equals(payType)) { +// TbShopUser user = tbShopUserMapper.selectByUserIdAndShopId(orderInfo.getUserId(), orderInfo.getShopId()); +// if (ObjectUtil.isNull(user) || ObjectUtil.isEmpty(user)) { +// user = tbShopUserMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getMemberId())); +// } +// +// +// if (ObjectUtil.isNull(user) || ObjectUtil.isEmpty(user)) { +// return Result.fail(ACCOUNTEIXST); +// } +// +// if (!user.getShopId().equals(orderInfo.getShopId())) { +// return Result.fail(ACCOUNTEIXST); +// } +// +// +// newOrderInfo.setMemberId(orderInfo.getMemberId()); +// newOrderInfo.setUserId(orderInfo.getUserId()); +// +// user.setAmount(user.getAmount().add(newOrderInfo.getPayAmount().setScale(2, RoundingMode.DOWN))); +// user.setConsumeAmount(user.getConsumeAmount().subtract(newOrderInfo.getPayAmount().setScale(2, RoundingMode.DOWN))); +// user.setUpdatedAt(System.currentTimeMillis()); +// tbShopUserMapper.updateByPrimaryKeySelective(user); +// +// +// TbShopUserFlow flow = new TbShopUserFlow(); +// flow.setShopUserId(user.getId()); +// flow.setBizCode("accountReturnPay"); +// flow.setBizName("会员储值卡退款"); +// flow.setType("+"); +// flow.setAmount(newOrderInfo.getPayAmount()); +// flow.setBalance(user.getAmount()); +// flow.setCreateTime(new Date()); +// flow.setIsReturn("0"); +// tbShopUserFlowMapper.insert(flow); +// +// +// JSONObject baObj = new JSONObject(); +// baObj.put("userId", user.getUserId()); +// baObj.put("shopId", user.getShopId()); +// baObj.put("amount", newOrderInfo.getPayAmount()); +// baObj.put("balance", user.getAmount()); +// baObj.put("type", "退款"); +// baObj.put("time", flow.getCreateTime()); +// producer.balance(baObj.toString()); +// +// } +// } +// +// //判断是否修改主单状态 +// BigDecimal returnAmount = tbOrderDetailMapper.selectByOrderId(orderId.toString()); +// if (N.egt(returnAmount.add(payAmount), orderAmount)) { +// orderInfo.setStatus("refund"); +// } +// +// +// orderInfo.setRemark(remark); +// orderInfo.setUpdatedAt(System.currentTimeMillis()); +// tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo); +// +// //添加退单数据 +// newOrderInfo.setSource(orderId); +// tbOrderInfoMapper.insert(newOrderInfo); +// +// //更新子单表 +// if (ObjectUtil.isNotEmpty(detailPos) && detailPos.size() > 0) { +// tbOrderDetailMapper.updateBatchOrderDetail(detailPos); +// } +// +// //添加子表信息 +// if (ObjectUtil.isNotEmpty(returnDetail) && returnDetail.size() > 0) { +// tbOrderDetailMapper.batchInsert(returnDetail, newOrderInfo.getId().toString()); +// } +// +// +// JSONObject jsonObject = new JSONObject(); +// jsonObject.put("token", token); +// jsonObject.put("type", "return"); +// jsonObject.put("orderId", 0); +// jsonObject.put("amount", newOrderInfo.getPayAmount()); +//// jsonObject.put("data",new ReturnWTZInfo(orderId+"",newOrderInfo.getPayAmount(),details)); +// producer.putOrderCollect(jsonObject.toJSONString()); +// +// +// producer.printMechine(newOrderInfo.getId().toString()); +// +// +// //修改耗材数据 +// JSONObject jsonObject1 = new JSONObject(); +// jsonObject1.put("orderId", newOrderInfo.getId()); +// jsonObject1.put("type", "delete"); +// producer.cons(jsonObject1.toString()); +// +// // 更新商品库存 +// for (TbOrderDetail detail : returnDetail) { +// detail = tbOrderDetailMapper.selectByPrimaryKey(detail.getId()); +// +// TbProductSku productSku = productSkuMapper.selectByPrimaryKey(detail.getProductSkuId()); +// TbProductWithBLOBs product = productMapper.selectByPrimaryKey(detail.getProductId()); +// +// TbProductStockDetail tbProductStockDetail = new TbProductStockDetail(); +// tbProductStockDetail.setCreatedAt(System.currentTimeMillis()); +// tbProductStockDetail.setUpdatedAt(System.currentTimeMillis()); +// tbProductStockDetail.setShopId(detail.getShopId().toString()); +// tbProductStockDetail.setSourcePath("NORMAL"); +// tbProductStockDetail.setType("退单"); +// tbProductStockDetail.setSubType((byte) 1); +// tbProductStockDetail.setRemark("退单: " + detail.getOrderId()); +// tbProductStockDetail.setOrderId(String.valueOf(detail.getOrderId())); +// +// if (ObjectUtil.isNotEmpty(product)) { +// TbShopUnit shopUnit = shopUnitMapper.selectByPrimaryKey(Integer.valueOf(product.getUnitId())); +// +// tbProductStockDetail.setProductName(product.getName()); +// tbProductStockDetail.setIsStock(product.getIsStock()); +// tbProductStockDetail.setStockSnap(product.getSelectSpec()); +// tbProductStockDetail.setUnitName(shopUnit.getName()); +// tbProductStockDetail.setProductId(product.getId().toString()); +// +// productMapper.updateStockById(product.getId(), detail.getReturnNum() * -1); +// +// tbProductStockDetail.setLeftNumber(product.getStockNumber()); +// tbProductStockDetail.setStockNumber(Double.valueOf(detail.getReturnNum())); +// productSkuMapper.decrRealSalesNumber(productSku.getId(), detail.getReturnNum()); +// } +// +// productStockDetailMapper.insert(tbProductStockDetail); +// } +// redisUtil.del("SHOP:CODE:USER:" + "pc" + ":" + orderInfo.getShopId() + ":" + DateUtils.getDay() + TokenUtil.parseParamFromToken(token).getString("accountId")); +// +// +// return Result.success(CodeEnum.SUCCESS); + return null; } public Result quickPay(String token, String amount, String authCode, String payType) { diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java index eaede9b..503f1da 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java @@ -23,6 +23,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.*; @Service @@ -147,11 +148,11 @@ public class ProductService { return Result.success(CodeEnum.SUCCESS,pageInfo); } - public void incrStock(String productId, String skuId, int addNum) { + public void incrStock(String productId, String skuId, BigDecimal addNum) { tbProductMapper.incrStock(productId, addNum); } - public void decrStock(String productId, String skuId, int decrNum) { + public void decrStock(String productId, String skuId, BigDecimal decrNum) { TbProductWithBLOBs product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(productId)); if (product.getIsStock() == 1) { if (tbProductMapper.decrStock(productId, decrNum) < 1) { diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpCashierCartServiceImpl.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpCashierCartServiceImpl.java index 3526584..bae2c1a 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpCashierCartServiceImpl.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpCashierCartServiceImpl.java @@ -1,5 +1,6 @@ package com.chaozhanggui.system.cashierservice.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ArrayUtil; @@ -9,6 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.chaozhanggui.system.cashierservice.bean.constant.TableConstant; import com.chaozhanggui.system.cashierservice.entity.TbCashierCart; import com.chaozhanggui.system.cashierservice.entity.TbOrderDetail; +import com.chaozhanggui.system.cashierservice.entity.dto.ShopEatTypeInfoDTO; import com.chaozhanggui.system.cashierservice.mybatis.MPCashierCartMapper; import com.chaozhanggui.system.cashierservice.mybatis.MPOrderDetailMapper; import com.chaozhanggui.system.cashierservice.service.MpCashierCartService; @@ -59,5 +61,43 @@ public class MpCashierCartServiceImpl extends ServiceImpl query = new LambdaQueryWrapper() + .eq(TbCashierCart::getShopId, shopEatTypeInfoDTO.getShopId()) + .gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime()) + .isNull(TbCashierCart::getPlaceNum) + .eq(TbCashierCart::getUseType, shopEatTypeInfoDTO.getUseType()) + .eq(TbCashierCart::getStatus, "create") + .eq(TbCashierCart::getIsGift, isGift) + .and(q -> q.eq(TbCashierCart::getMasterId, masterId).or().isNull(TbCashierCart::getMasterId)); + if (isTemp) { + query.isNull(TbCashierCart::getProductId).isNull(TbCashierCart::getSkuId).eq(TbCashierCart::getIsTemporary, 1); + }else { + query.eq(TbCashierCart::getProductId, productId) + .eq(TbCashierCart::getSkuId, skuId); + } + + // 外带只查询pc和收银机商品 + if (shopEatTypeInfoDTO.isTakeout()) { + query.and(q -> q.isNull(TbCashierCart::getTableId).or().eq(TbCashierCart::getTableId, "")) + .in(TbCashierCart::getPlatformType, "pc", "cash"); + } else { + query.eq(TbCashierCart::getTableId, shopEatTypeInfoDTO.getTableId()); + } + + return getOne(query); + } + @Override + public TbCashierCart selectByShopIdAndId(Integer shopId, Integer cartId, TableConstant.OrderInfo.Status... statuses) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(TbCashierCart::getShopId, shopId) + .eq(TbCashierCart::getId, cartId); + if (statuses.length != 0) { + queryWrapper.in(TbCashierCart::getStatus, CollUtil.newArrayList(statuses)); + } + return getOne(queryWrapper); + } } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderDetailServiceImpl.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderDetailServiceImpl.java index be5b03c..37c82a0 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderDetailServiceImpl.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderDetailServiceImpl.java @@ -46,7 +46,7 @@ public class MpOrderDetailServiceImpl extends ServiceImpl() .eq(TbOrderDetail::getOrderId, orderId)); } diff --git a/src/main/resources/mapper/TbProductMapper.xml b/src/main/resources/mapper/TbProductMapper.xml index 709b345..6cbaccf 100644 --- a/src/main/resources/mapper/TbProductMapper.xml +++ b/src/main/resources/mapper/TbProductMapper.xml @@ -5,87 +5,46 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - id, category_id, spec_id, source_path, brand_id, merchant_id, shop_id, name, short_title, - type, pack_fee, low_price, low_member_price, unit_id, unit_snap, cover_img, share_img, - video_cover_img, sort, limit_number, product_score, status, fail_msg, is_recommend, - is_hot, is_new, is_on_sale, is_show, type_enum, is_distribute, is_del, is_stock, - is_pause_sale, is_free_freight, freight_id, strategy_type, strategy_id, is_vip, is_delete, - created_at, updated_at, base_sales_number, real_sales_number, sales_number, thumb_count, - store_count, furnish_meal, furnish_express, furnish_draw, furnish_vir, is_combo, - is_show_cash, is_show_mall, is_need_examine, show_on_mall_status, show_on_mall_time, - show_on_mall_error_msg, enable_label, tax_config_id, spec_table_headers, stock_number,warn_line + id, category_id, spec_id, shop_id, name, short_title, + type, pack_fee, low_price, unit_id, cover_img, + sort, status, fail_msg, + is_hot, type_enum, is_del, is_stock, + is_pause_sale, + created_at, updated_at, real_sales_number, + spec_table_headers, stock_number,warn_line - images, video, notice, group_snap, spec_info, select_spec + images, group_snap, spec_info, select_spec - select * from tb_product where shop_id=#{shopId} and status=1 and is_show_cash = 1 and type_enum in ('normal','sku','currentPrice','weight') + select * from tb_product where shop_id=#{shopId} and status=1 and type_enum in ('normal','sku','currentPrice','weight') and name like CONCAT('%',#{commdityName},'%') @@ -918,7 +483,7 @@ - select * from tb_product where shop_id=#{shopId} and status=1 and category_id=#{categoryId} and is_show_cash = 1 and type_enum in ('normal','sku','currentPrice','weight') + select * from tb_product where shop_id=#{shopId} and status=1 and category_id=#{categoryId} and type_enum in ('normal','sku','currentPrice','weight') and name like CONCAT('%',#{commdityName},'%') @@ -943,7 +508,7 @@ select a.* from tb_product as a left join tb_product_sku as b on a.id = b.product_id - where a.shop_id=#{shopId} and a.status=1 and a.category_id=#{categoryId} and a.is_show_cash = 1 and a.type_enum in ('normal','sku','currentPrice','weight') + where a.shop_id=#{shopId} and a.status=1 and a.category_id=#{categoryId} and a.type_enum in ('normal','sku','currentPrice','weight') and a.name like CONCAT('%',#{commdityName},'%') @@ -955,7 +520,7 @@ select a.* from tb_product as a left join tb_product_sku as b on a.id = b.product_id - where a.shop_id=#{shopId} and a.status=1 and a.is_show_cash = 1 and a.type_enum in ('normal','sku','currentPrice','weight') + where a.shop_id=#{shopId} and a.status=1 and a.type_enum in ('normal','sku','currentPrice','weight') and a.name like CONCAT('%',#{commdityName},'%') From 4c209ac27b6b08b3d0f90c0a5a04d3ecdffc9ee9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Mon, 25 Nov 2024 11:09:26 +0800 Subject: [PATCH 10/77] =?UTF-8?q?feat:=20dev=E5=A2=9E=E5=8A=A0=E9=A2=84?= =?UTF-8?q?=E5=8F=91=E5=B8=83=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application-dev.yml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index f1e76b1..43d4e86 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -1,13 +1,19 @@ +#PRE_DATABASE: fycashier_pre +#PRE_HOST: 121.40.109.122 server: port: 10589 spring: application: name: cashierService datasource: - url: jdbc:p6spy:mysql://rm-bp1kn7h89nz62cno1ro.mysql.rds.aliyuncs.com:3306/fycashier_test?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useJDBCCompliantTimezoneShift=true&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true + url: jdbc:p6spy:mysql://rm-bp1kn7h89nz62cno1ro.mysql.rds.aliyuncs.com:3306/${PRE_DATABASE:fycashier_test}?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useJDBCCompliantTimezoneShift=true&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true username: cashier password: Cashier@1@ driver-class-name: com.p6spy.engine.spy.P6SpyDriver +# url: jdbc:mysql://rm-bp1b572nblln4jho2po.mysql.rds.aliyuncs.com/fycashier?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useJDBCCompliantTimezoneShift=true&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true +# username: root +# password: Czg666888 +# driver-class-name: com.mysql.cj.jdbc.Driver initialSize: 5 minIdle: 5 maxActive: 20 @@ -16,8 +22,9 @@ spring: # redis数据库索引(默认为0),我们使用索引为3的数据库,避免和其他数据库冲突 database: 0 # redis服务器地址(默认为localhost) - host: 101.37.12.135 -# host: 127.0.0.1 + host: ${PRE_HOSE:101.37.12.135} +# host: 121.40.128.145 + # host: 127.0.0.1 # redis端口(默认为6379) port: 6379 # redis访问密码(默认为空) From e5c74051c71467cc0795f947aaa03cabcee3777b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Mon, 25 Nov 2024 14:08:34 +0800 Subject: [PATCH 11/77] =?UTF-8?q?feat:=201.=E5=8D=95=E5=93=81=E6=94=B9?= =?UTF-8?q?=E4=BB=B7=202.=E5=85=8D=E5=8E=A8=E6=89=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/OrderController.java | 12 +++--- .../entity/dto/UpdatePriceDTO.java | 21 ++++++++++ .../cashierservice/entity/vo/CartVo.java | 1 + .../service/MpOrderDetailService.java | 8 ++++ .../service/MpOrderInfoService.java | 4 ++ .../cashierservice/service/OrderService.java | 38 ++++++++++++++++++- .../impl/MpOrderDetailServiceImpl.java | 9 +++++ .../service/impl/MpOrderInfoServiceImpl.java | 15 ++++++++ 8 files changed, 101 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/UpdatePriceDTO.java diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java b/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java index a0bf2fd..5fe8f00 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java @@ -4,10 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.chaozhanggui.system.cashierservice.entity.OrderVo; -import com.chaozhanggui.system.cashierservice.entity.dto.AddTemporaryDishesDTO; -import com.chaozhanggui.system.cashierservice.entity.dto.ChoseCountDTO; -import com.chaozhanggui.system.cashierservice.entity.dto.ReturnCartDTO; -import com.chaozhanggui.system.cashierservice.entity.dto.UpdateVipDTO; +import com.chaozhanggui.system.cashierservice.entity.dto.*; import com.chaozhanggui.system.cashierservice.entity.vo.CartVo; import com.chaozhanggui.system.cashierservice.service.OrderService; import com.chaozhanggui.system.cashierservice.sign.CodeEnum; @@ -45,7 +42,7 @@ public class OrderController { String userId = jsonObject.getString("accountId"); return orderService.createCart(cartVo.getMasterId(), cartVo.getProductId(), cartVo.getShopId(), cartVo.getSkuId(), cartVo.getNumber(), userId, clientType, cartVo.getCartId(), cartVo.getIsGift(), - cartVo.getIsPack(), cartVo.getUuid(), cartVo.getType(), cartVo.getTableId()); + cartVo.getIsPack(), cartVo.getUuid(), cartVo.getType(), cartVo.getTableId(), cartVo.getIsPrint()); } @PostMapping("/temporaryDishes") @@ -53,6 +50,11 @@ public class OrderController { return Result.success(CodeEnum.SUCCESS, orderService.addTemporaryDishes(temporaryDishesDTO)); } + @PutMapping("/updatePrice") + public Result updatePrice(@Valid @RequestBody UpdatePriceDTO updatePriceDTO) { + return Result.success(CodeEnum.SUCCESS, orderService.updatePrice(updatePriceDTO)); + } + @GetMapping("/queryCart") public Result queryCart(@RequestHeader("token") String token, @RequestHeader("loginName") String loginName, diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/UpdatePriceDTO.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/UpdatePriceDTO.java new file mode 100644 index 0000000..1d04620 --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/UpdatePriceDTO.java @@ -0,0 +1,21 @@ +package com.chaozhanggui.system.cashierservice.entity.dto; + +import lombok.Data; + +import javax.validation.constraints.DecimalMin; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; + +@Data +public class UpdatePriceDTO { + @NotNull + private Integer shopId; + @NotNull + private Integer cartId; + @DecimalMin("0.01") + @NotNull + private BigDecimal amount; + @NotBlank(message = "折扣原因不能为空") + private String note; +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/CartVo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/CartVo.java index 7fbc13f..99b11eb 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/CartVo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/CartVo.java @@ -26,4 +26,5 @@ public class CartVo { private String masterId; private String tableId; private Integer orderId; + private Boolean isPrint; } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderDetailService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderDetailService.java index beaaf0a..92bf032 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderDetailService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderDetailService.java @@ -6,6 +6,7 @@ import com.chaozhanggui.system.cashierservice.entity.TbOrderDetail; import com.chaozhanggui.system.cashierservice.entity.TbShopPermission; import com.chaozhanggui.system.cashierservice.sign.Result; +import java.math.BigDecimal; import java.util.List; /** @@ -37,5 +38,12 @@ public interface MpOrderDetailService extends IService { * @param orderId 订单id */ boolean removeByOrderId(Integer orderId); + + /** + * 根据购物车id修改detail价格 + * @param cartId 购物车id + * @param totalAmount 总价格 + */ + boolean updatePriceByCartId(Integer cartId, BigDecimal saleAmount, BigDecimal totalAmount); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderInfoService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderInfoService.java index fcebf1e..bc11665 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderInfoService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderInfoService.java @@ -5,6 +5,7 @@ import com.chaozhanggui.system.cashierservice.bean.constant.TableConstant; import com.chaozhanggui.system.cashierservice.entity.TbOrderDetail; import com.chaozhanggui.system.cashierservice.entity.TbOrderInfo; +import java.math.BigDecimal; import java.util.List; /** @@ -23,5 +24,8 @@ public interface MpOrderInfoService extends IService { * @return 是否成功 */ boolean updateStateById(Integer shopId, Integer orderId, TableConstant.Status status); + + boolean incrAmount(Integer orderId, BigDecimal subtract); + } 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 1c856c9..38094f8 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -209,7 +209,7 @@ public class OrderService { @Transactional(rollbackFor = Exception.class) public Result createCart(String masterId, Integer productId, Integer shopId, Integer skuId, BigDecimal number, - String userId, String clientType, Integer cartId, String isGift, String isPack, String uuid, String type, String tableId) { + String userId, String clientType, Integer cartId, String isGift, String isPack, String uuid, String type, String tableId, Boolean isPrint) { if (number == null) { return Result.fail(CodeEnum.PARAM); } @@ -336,6 +336,7 @@ public class OrderService { cart.setTotalNumber(number); cart.resetTotalAmount(); cart.setUuid(uuid); + cart.setIsPrint(isPrint); cashierCartMapper.updateByPrimaryKeySelective(cart); } else { List list = cashierCartMapper.selectALlByMasterId(masterId, "create"); @@ -362,6 +363,7 @@ public class OrderService { cashierCart.setMemberPrice(skuWithBLOBs.getMemberPrice()); cashierCart.setIsMember(0); } + cashierCart.setIsPrint(isPrint); cashierCart.setShopId(shopId.toString()); cashierCart.setTradeDay(DateUtils.getDay()); cashierCart.setStatus("create"); @@ -399,7 +401,7 @@ public class OrderService { } else { cashierCart.setNumber(number); } - + cashierCart.setIsPrint(isPrint); cashierCart.resetTotalAmount(); mpCashierCartMapper.updateById(cashierCart); } @@ -2092,4 +2094,36 @@ public class OrderService { } return tbCashierCart; } + + public Object updatePrice(UpdatePriceDTO updatePriceDTO) { + TbCashierCart cashierCart = mpCashierCartService.selectByShopIdAndId(updatePriceDTO.getShopId(), updatePriceDTO.getCartId(), TableConstant.OrderInfo.Status.CREATE); + if (cashierCart == null) { + throw new MsgException("购物车商品不存在"); + } + + if (cashierCart.getIsMember() == 0) { + if (cashierCart.getSalePrice().subtract(updatePriceDTO.getAmount()).compareTo(BigDecimal.ZERO) < 0) { + throw new MsgException("折扣金额不能超过单价"); + } + }else { + if (cashierCart.getMemberPrice().subtract(updatePriceDTO.getAmount()).compareTo(BigDecimal.ZERO) < 0) { + throw new MsgException("折扣金额不能超过单价"); + } + } + + BigDecimal oldAmount = cashierCart.getTotalAmount(); + cashierCart.setDiscountSaleAmount(updatePriceDTO.getAmount()); + cashierCart.resetTotalAmount(); + cashierCart.setUpdatedAt(DateUtil.date().getTime()); + cashierCart.setDiscountSaleNote(updatePriceDTO.getNote()); + cashierCart.setDiscountSaleAmount(updatePriceDTO.getAmount()); + mpCashierCartService.updateById(cashierCart); + + // 更新订单和detail价格 + if (cashierCart.getOrderId() != null) { + mpOrderDetailService.updatePriceByCartId(cashierCart.getId(), updatePriceDTO.getAmount(), cashierCart.getTotalAmount()); + mpOrderInfoService.incrAmount(cashierCart.getOrderId(), cashierCart.getTotalAmount().subtract(oldAmount)); + } + return cashierCart; + } } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderDetailServiceImpl.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderDetailServiceImpl.java index 37c82a0..6eef90b 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderDetailServiceImpl.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderDetailServiceImpl.java @@ -20,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.List; /** @@ -50,5 +51,13 @@ public class MpOrderDetailServiceImpl extends ServiceImpl() .eq(TbOrderDetail::getOrderId, orderId)); } + + @Override + public boolean updatePriceByCartId(Integer cartId, BigDecimal saleAmount, BigDecimal totalAmount) { + return update(new LambdaUpdateWrapper() + .eq(TbOrderDetail::getCartId, cartId) + .set(TbOrderDetail::getPrice, saleAmount) + .set(TbOrderDetail::getPriceAmount, totalAmount)); + } } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderInfoServiceImpl.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderInfoServiceImpl.java index b743e44..9db8098 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderInfoServiceImpl.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderInfoServiceImpl.java @@ -1,6 +1,7 @@ package com.chaozhanggui.system.cashierservice.service.impl; import cn.hutool.Hutool; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.chaozhanggui.system.cashierservice.bean.constant.TableConstant; @@ -12,6 +13,7 @@ import com.chaozhanggui.system.cashierservice.service.MpOrderDetailService; import com.chaozhanggui.system.cashierservice.service.MpOrderInfoService; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.List; /** @@ -30,5 +32,18 @@ public class MpOrderInfoServiceImpl extends ServiceImpl() + .eq(TbOrderInfo::getId, orderId) + .eq(TbOrderInfo::getStatus, TableConstant.OrderInfo.Status.UNPAID.getValue()) + .apply(StrUtil.format("settlement_amount + {} >= 0", subtract)) + .setSql(StrUtil.format("settlement_amount=settlement_amount+{}", subtract)) + .setSql(StrUtil.format("order_amount=order_amount+{}", subtract)) + .setSql(StrUtil.format("amount=amount+{}", subtract)) + .setSql(StrUtil.format("origin_amount=origin_amount+{}", subtract)) + ); + } } From c6aff238c1bc0a9a7097e5f002a0edbbb35d96ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Mon, 25 Nov 2024 17:11:19 +0800 Subject: [PATCH 12/77] =?UTF-8?q?feat:=201.=E5=8E=BB=E9=99=A4product?= =?UTF-8?q?=E6=97=A0=E7=94=A8=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashierservice/entity/TbProduct.java | 12 ++++++++++++ .../cashierservice/service/OrderService.java | 10 +++++----- .../cashierservice/service/ProductService.java | 6 +++--- src/main/resources/mapper/TbProductMapper.xml | 18 ++++++++---------- 4 files changed, 28 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProduct.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProduct.java index 462c2bf..a0b5fd5 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProduct.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProduct.java @@ -6,6 +6,7 @@ import org.springframework.data.annotation.Transient; import java.io.Serializable; import java.math.BigDecimal; +import java.util.List; @Data public class TbProduct implements Serializable { @@ -76,5 +77,16 @@ public class TbProduct implements Serializable { private static final long serialVersionUID = 1L; + private String images; + private String groupSnap; + + @TableField(exist = false) + private List skuList; + @TableField(exist = false) + private Object groundingSpecInfo; + private String specInfo; + private String selectSpec; + + } 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 38094f8..c3540ae 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -604,7 +604,7 @@ public class OrderService { cashierCart.setSkuName(skuWithBLOBs.getSpecSnap()); } - TbProductWithBLOBs tbProduct = tbProductMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getProductId())); + TbProduct tbProduct = tbProductMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getProductId())); if (Objects.nonNull(tbProduct)) { // cashierCart.setSelectSpec(tbProduct.getSelectSpec()); if (tbProduct.getSpecId() != null) { @@ -648,7 +648,7 @@ public class OrderService { } if (cashierCart.getIsTemporary() == null || cashierCart.getIsTemporary() == 0) { - TbProductWithBLOBs product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getProductId())); + TbProduct product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getProductId())); if (ObjectUtil.isEmpty(product)) { return Result.fail(CodeEnum.PRODUCTINFOERROR); } @@ -903,7 +903,7 @@ public class OrderService { orderDetail.setPlaceNum(currentPlaceNum); } TbProductSkuWithBLOBs tbProduct = null; - TbProductWithBLOBs product = null; + TbProduct product = null; if (cashierCart.getIsTemporary() == 0) { product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getProductId())); if ("takeaway".equals(orderVo.getSendType()) || "takeself".equals(orderVo.getSendType())) { @@ -954,7 +954,7 @@ public class OrderService { if (TableConstant.CART_SEAT_ID.equals(cashierCart.getProductId()) && cashierCart.getIsTemporary() == 0) { // todo 修改为bigdecimal TbProductSkuWithBLOBs finalTbProduct = tbProduct; - TbProductWithBLOBs finalProduct = product; + TbProduct finalProduct = product; CompletableFuture.runAsync(() -> checkWarnLineAndSendMsg(finalTbProduct, finalProduct, Integer.valueOf(cashierCart.getShopId()), cashierCart.getNumber().intValue())); } } @@ -1279,7 +1279,7 @@ public class OrderService { } List list = cashierCartMapper.selectAllByMarketId(day, String.valueOf(cartVo.getShopId()), cartVo.getMasterId()); for (TbCashierCart cashierCart : list) { - TbProductWithBLOBs product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getProductId())); + TbProduct product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(cashierCart.getProductId())); if ("true".equals(cartVo.getStatus())) { cashierCart.setTotalAmount(cashierCart.getTotalNumber().multiply(cashierCart.getSalePrice().add(product.getPackFee()))); cashierCart.setPackFee(cashierCart.getTotalNumber().multiply(product.getPackFee())); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java index 503f1da..bba096d 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java @@ -72,7 +72,7 @@ public class ProductService { public Result queryCommodityInfo(String shopId, String categoryId, String commdityName, Integer page, Integer pageSize, String masterId){ - List tbProductWithBLOBs=null; + List tbProductWithBLOBs=null; if(ObjectUtil.isEmpty(categoryId)){ tbProductWithBLOBs=tbProductMapper.selectByShopId(shopId,commdityName); }else { @@ -112,7 +112,7 @@ public class ProductService { } public Result queryNewCommodityInfo(String shopId, String categoryId, String commdityName, String tableId, int page, int pageSize, String masterId) { - List tbProductWithBLOBs=null; + List tbProductWithBLOBs=null; PageHelperUtil.startPage(page,pageSize); if(ObjectUtil.isEmpty(categoryId)){ tbProductWithBLOBs=tbProductMapper.selectByShopIdAndCheckGrounding(shopId,commdityName); @@ -153,7 +153,7 @@ public class ProductService { } public void decrStock(String productId, String skuId, BigDecimal decrNum) { - TbProductWithBLOBs product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(productId)); + TbProduct product = tbProductMapper.selectByPrimaryKey(Integer.valueOf(productId)); if (product.getIsStock() == 1) { if (tbProductMapper.decrStock(productId, decrNum) < 1) { throw new MsgException("库存不足,下单失败"); diff --git a/src/main/resources/mapper/TbProductMapper.xml b/src/main/resources/mapper/TbProductMapper.xml index 6cbaccf..1bf154a 100644 --- a/src/main/resources/mapper/TbProductMapper.xml +++ b/src/main/resources/mapper/TbProductMapper.xml @@ -28,7 +28,7 @@ - + @@ -58,7 +58,7 @@ delete from tb_product where id = #{id,jdbcType=INTEGER} - + insert into tb_product (id, category_id, spec_id, shop_id, name, short_title, type, pack_fee, low_price, @@ -72,7 +72,7 @@ real_sales_number, spec_table_headers, images, - group_snap, spec_info, select_spec, stock_number,warn_line + group_snap, spec_info, select_spec, stock_number ) values (#{id,jdbcType=INTEGER}, #{categoryId,jdbcType=VARCHAR}, #{specId,jdbcType=INTEGER}, #{shopId,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{shortTitle,jdbcType=VARCHAR}, @@ -90,10 +90,10 @@ #{specTableHeaders,jdbcType=VARCHAR}, #{images,jdbcType=LONGVARCHAR}, #{groupSnap,jdbcType=LONGVARCHAR}, #{specInfo,jdbcType=LONGVARCHAR}, #{selectSpec,jdbcType=LONGVARCHAR}, - #{stockNumber,jdbcType=INTEGER},#{warnLine,jdbcType=INTEGER} + #{stockNumber,jdbcType=INTEGER} ) - + insert into tb_product @@ -309,7 +309,7 @@ - + update tb_product @@ -411,7 +411,7 @@ where id = #{id,jdbcType=INTEGER} - + update tb_product set category_id = #{categoryId,jdbcType=VARCHAR}, spec_id = #{specId,jdbcType=INTEGER}, @@ -439,8 +439,7 @@ group_snap = #{groupSnap,jdbcType=LONGVARCHAR}, spec_info = #{specInfo,jdbcType=LONGVARCHAR}, select_spec = #{selectSpec,jdbcType=LONGVARCHAR}, - stock_number = #{stockNumber,jdbcType=INTEGER}, - warn_line = #{warnLine,jdbcType=INTEGER} + stock_number = #{stockNumber,jdbcType=INTEGER} where id = #{id,jdbcType=INTEGER} @@ -558,7 +557,6 @@ i.id as con_id, i.con_code, i.con_name, - i.surplus_stock, i.stock_number, p.id as product_id, p.`name` as product_name, From 7797edd8138670fb715b5fba597808076e1860cf 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, 26 Nov 2024 09:42:50 +0800 Subject: [PATCH 13/77] =?UTF-8?q?feat:=201.=E5=A2=9E=E5=8A=A0=E5=95=86?= =?UTF-8?q?=E5=93=81=E5=8D=95=E4=BD=8D=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ShopUnitController.java | 25 +++ .../cashierservice/entity/TbShopUnit.java | 183 +++++++++++++++++- .../mapper/MpShopUnitMapper.java | 20 ++ .../service/TbShopUnitService.java | 17 ++ .../service/impl/TbShopUnitServiceImpl.java | 33 ++++ .../resources/mapper/TbShopUnitMapper.xml | 177 +++-------------- 6 files changed, 293 insertions(+), 162 deletions(-) create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/controller/ShopUnitController.java create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/mapper/MpShopUnitMapper.java create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/service/TbShopUnitService.java create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/service/impl/TbShopUnitServiceImpl.java diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/controller/ShopUnitController.java b/src/main/java/com/chaozhanggui/system/cashierservice/controller/ShopUnitController.java new file mode 100644 index 0000000..c6f431d --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/ShopUnitController.java @@ -0,0 +1,25 @@ +package com.chaozhanggui.system.cashierservice.controller; + +import com.chaozhanggui.system.cashierservice.service.TbShopUnitService; +import com.chaozhanggui.system.cashierservice.sign.CodeEnum; +import com.chaozhanggui.system.cashierservice.sign.Result; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/unit") +public class ShopUnitController { + private final TbShopUnitService shopUnitService; + + public ShopUnitController(TbShopUnitService shopUnitService) { + this.shopUnitService = shopUnitService; + } + + @GetMapping + public Result getShopUnit(@RequestParam Integer shopId, @RequestParam(defaultValue = "1") Integer page, + @RequestParam(defaultValue = "20") Integer size, @RequestParam(required = false) String name) { + return Result.success(CodeEnum.SUCCESS, shopUnitService.getShopUnit(shopId, page, size, name)); + } +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbShopUnit.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbShopUnit.java index 2b3b263..34b5d4c 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbShopUnit.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbShopUnit.java @@ -1,107 +1,270 @@ package com.chaozhanggui.system.cashierservice.entity; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; +/** + * 商品单位 + * @TableName tb_shop_unit + */ +@TableName(value ="tb_shop_unit") public class TbShopUnit implements Serializable { + /** + * id + */ + @TableId(type = IdType.AUTO) private Integer id; + /** + * 单位名称 + */ private String name; + /** + * 小数位(个数大于0,表示小数据精度位数) + */ private Integer decimalsDigits; + /** + * 单位类型(weight代表重量,小数单位,为number代表个数) + */ private String unitType; - private Byte isSystem; + /** + * 0后台添加 -1系统默认 (公斤、瓶) + */ + private Integer isSystem; - private Byte status; + /** + * 预留字段1-正常 + */ + private Integer status; + /** + * + */ private String merchantId; + /** + * 店铺Id + */ private String shopId; + /** + * + */ private Long createdAt; + /** + * + */ private Long updatedAt; + @TableField(exist = false) private static final long serialVersionUID = 1L; + /** + * id + */ public Integer getId() { return id; } + /** + * id + */ public void setId(Integer id) { this.id = id; } + /** + * 单位名称 + */ public String getName() { return name; } + /** + * 单位名称 + */ public void setName(String name) { - this.name = name == null ? null : name.trim(); + this.name = name; } + /** + * 小数位(个数大于0,表示小数据精度位数) + */ public Integer getDecimalsDigits() { return decimalsDigits; } + /** + * 小数位(个数大于0,表示小数据精度位数) + */ public void setDecimalsDigits(Integer decimalsDigits) { this.decimalsDigits = decimalsDigits; } + /** + * 单位类型(weight代表重量,小数单位,为number代表个数) + */ public String getUnitType() { return unitType; } + /** + * 单位类型(weight代表重量,小数单位,为number代表个数) + */ public void setUnitType(String unitType) { - this.unitType = unitType == null ? null : unitType.trim(); + this.unitType = unitType; } - public Byte getIsSystem() { + /** + * 0后台添加 -1系统默认 (公斤、瓶) + */ + public Integer getIsSystem() { return isSystem; } - public void setIsSystem(Byte isSystem) { + /** + * 0后台添加 -1系统默认 (公斤、瓶) + */ + public void setIsSystem(Integer isSystem) { this.isSystem = isSystem; } - public Byte getStatus() { + /** + * 预留字段1-正常 + */ + public Integer getStatus() { return status; } - public void setStatus(Byte status) { + /** + * 预留字段1-正常 + */ + public void setStatus(Integer status) { this.status = status; } + /** + * + */ public String getMerchantId() { return merchantId; } + /** + * + */ public void setMerchantId(String merchantId) { - this.merchantId = merchantId == null ? null : merchantId.trim(); + this.merchantId = merchantId; } + /** + * 店铺Id + */ public String getShopId() { return shopId; } + /** + * 店铺Id + */ public void setShopId(String shopId) { - this.shopId = shopId == null ? null : shopId.trim(); + this.shopId = shopId; } + /** + * + */ public Long getCreatedAt() { return createdAt; } + /** + * + */ public void setCreatedAt(Long createdAt) { this.createdAt = createdAt; } + /** + * + */ public Long getUpdatedAt() { return updatedAt; } + /** + * + */ public void setUpdatedAt(Long updatedAt) { this.updatedAt = updatedAt; } + + @Override + public boolean equals(Object that) { + if (this == that) { + return true; + } + if (that == null) { + return false; + } + if (getClass() != that.getClass()) { + return false; + } + TbShopUnit other = (TbShopUnit) that; + return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId())) + && (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName())) + && (this.getDecimalsDigits() == null ? other.getDecimalsDigits() == null : this.getDecimalsDigits().equals(other.getDecimalsDigits())) + && (this.getUnitType() == null ? other.getUnitType() == null : this.getUnitType().equals(other.getUnitType())) + && (this.getIsSystem() == null ? other.getIsSystem() == null : this.getIsSystem().equals(other.getIsSystem())) + && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus())) + && (this.getMerchantId() == null ? other.getMerchantId() == null : this.getMerchantId().equals(other.getMerchantId())) + && (this.getShopId() == null ? other.getShopId() == null : this.getShopId().equals(other.getShopId())) + && (this.getCreatedAt() == null ? other.getCreatedAt() == null : this.getCreatedAt().equals(other.getCreatedAt())) + && (this.getUpdatedAt() == null ? other.getUpdatedAt() == null : this.getUpdatedAt().equals(other.getUpdatedAt())); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((getId() == null) ? 0 : getId().hashCode()); + result = prime * result + ((getName() == null) ? 0 : getName().hashCode()); + result = prime * result + ((getDecimalsDigits() == null) ? 0 : getDecimalsDigits().hashCode()); + result = prime * result + ((getUnitType() == null) ? 0 : getUnitType().hashCode()); + result = prime * result + ((getIsSystem() == null) ? 0 : getIsSystem().hashCode()); + result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode()); + result = prime * result + ((getMerchantId() == null) ? 0 : getMerchantId().hashCode()); + result = prime * result + ((getShopId() == null) ? 0 : getShopId().hashCode()); + result = prime * result + ((getCreatedAt() == null) ? 0 : getCreatedAt().hashCode()); + result = prime * result + ((getUpdatedAt() == null) ? 0 : getUpdatedAt().hashCode()); + return result; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(getClass().getSimpleName()); + sb.append(" ["); + sb.append("Hash = ").append(hashCode()); + sb.append(", id=").append(id); + sb.append(", name=").append(name); + sb.append(", decimalsDigits=").append(decimalsDigits); + sb.append(", unitType=").append(unitType); + sb.append(", isSystem=").append(isSystem); + sb.append(", status=").append(status); + sb.append(", merchantId=").append(merchantId); + sb.append(", shopId=").append(shopId); + sb.append(", createdAt=").append(createdAt); + sb.append(", updatedAt=").append(updatedAt); + sb.append(", serialVersionUID=").append(serialVersionUID); + sb.append("]"); + return sb.toString(); + } } \ No newline at end of file diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/mapper/MpShopUnitMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/mapper/MpShopUnitMapper.java new file mode 100644 index 0000000..1bbce49 --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/mapper/MpShopUnitMapper.java @@ -0,0 +1,20 @@ +package com.chaozhanggui.system.cashierservice.mapper; + +import com.chaozhanggui.system.cashierservice.entity.TbShopUnit; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** +* @author Administrator +* @description 针对表【tb_shop_unit(商品单位)】的数据库操作Mapper +* @createDate 2024-11-26 09:36:19 +* @Entity com.chaozhanggui.system.cashierservice.entity.TbShopUnit +*/ +@Mapper +public interface MpShopUnitMapper extends BaseMapper { + + +} + + + diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/TbShopUnitService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/TbShopUnitService.java new file mode 100644 index 0000000..7ebffc4 --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/TbShopUnitService.java @@ -0,0 +1,17 @@ +package com.chaozhanggui.system.cashierservice.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.chaozhanggui.system.cashierservice.entity.TbShopUnit; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** +* @author Administrator +* @description 针对表【tb_shop_unit(商品单位)】的数据库操作Service +* @createDate 2024-11-26 09:36:19 +*/ +public interface TbShopUnitService extends IService { + + Page getShopUnit(Integer shopId, Integer page, Integer size, String name); +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/TbShopUnitServiceImpl.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/TbShopUnitServiceImpl.java new file mode 100644 index 0000000..5b98286 --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/TbShopUnitServiceImpl.java @@ -0,0 +1,33 @@ +package com.chaozhanggui.system.cashierservice.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.chaozhanggui.system.cashierservice.entity.TbShopUnit; +import com.chaozhanggui.system.cashierservice.mapper.MpShopUnitMapper; +import com.chaozhanggui.system.cashierservice.service.TbShopUnitService; +import org.springframework.stereotype.Service; + +/** +* @author Administrator +* @description 针对表【tb_shop_unit(商品单位)】的数据库操作Service实现 +* @createDate 2024-11-26 09:36:19 +*/ +@Service +public class TbShopUnitServiceImpl extends ServiceImpl + implements TbShopUnitService{ + + @Override + public Page getShopUnit(Integer shopId, Integer page, Integer size, String name) { + LambdaQueryWrapper query = new LambdaQueryWrapper().eq(TbShopUnit::getShopId, shopId); + if (StrUtil.isNotBlank(name)) { + query.like(TbShopUnit::getName, name); + } + return page(new Page<>(page, size), query); + } +} + + + + diff --git a/src/main/resources/mapper/TbShopUnitMapper.xml b/src/main/resources/mapper/TbShopUnitMapper.xml index 8630f61..4a51490 100644 --- a/src/main/resources/mapper/TbShopUnitMapper.xml +++ b/src/main/resources/mapper/TbShopUnitMapper.xml @@ -1,153 +1,26 @@ - - - - - - - - - - - - - - - - id, name, decimals_digits, unit_type, is_system, status, merchant_id, shop_id, created_at, - updated_at - - - - delete from tb_shop_unit - where id = #{id,jdbcType=INTEGER} - - - insert into tb_shop_unit (id, name, decimals_digits, - unit_type, is_system, status, - merchant_id, shop_id, created_at, - updated_at) - values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{decimalsDigits,jdbcType=INTEGER}, - #{unitType,jdbcType=VARCHAR}, #{isSystem,jdbcType=TINYINT}, #{status,jdbcType=TINYINT}, - #{merchantId,jdbcType=VARCHAR}, #{shopId,jdbcType=VARCHAR}, #{createdAt,jdbcType=BIGINT}, - #{updatedAt,jdbcType=BIGINT}) - - - insert into tb_shop_unit - - - id, - - - name, - - - decimals_digits, - - - unit_type, - - - is_system, - - - status, - - - merchant_id, - - - shop_id, - - - created_at, - - - updated_at, - - - - - #{id,jdbcType=INTEGER}, - - - #{name,jdbcType=VARCHAR}, - - - #{decimalsDigits,jdbcType=INTEGER}, - - - #{unitType,jdbcType=VARCHAR}, - - - #{isSystem,jdbcType=TINYINT}, - - - #{status,jdbcType=TINYINT}, - - - #{merchantId,jdbcType=VARCHAR}, - - - #{shopId,jdbcType=VARCHAR}, - - - #{createdAt,jdbcType=BIGINT}, - - - #{updatedAt,jdbcType=BIGINT}, - - - - - update tb_shop_unit - - - name = #{name,jdbcType=VARCHAR}, - - - decimals_digits = #{decimalsDigits,jdbcType=INTEGER}, - - - unit_type = #{unitType,jdbcType=VARCHAR}, - - - is_system = #{isSystem,jdbcType=TINYINT}, - - - status = #{status,jdbcType=TINYINT}, - - - merchant_id = #{merchantId,jdbcType=VARCHAR}, - - - shop_id = #{shopId,jdbcType=VARCHAR}, - - - created_at = #{createdAt,jdbcType=BIGINT}, - - - updated_at = #{updatedAt,jdbcType=BIGINT}, - - - where id = #{id,jdbcType=INTEGER} - - - update tb_shop_unit - set name = #{name,jdbcType=VARCHAR}, - decimals_digits = #{decimalsDigits,jdbcType=INTEGER}, - unit_type = #{unitType,jdbcType=VARCHAR}, - is_system = #{isSystem,jdbcType=TINYINT}, - status = #{status,jdbcType=TINYINT}, - merchant_id = #{merchantId,jdbcType=VARCHAR}, - shop_id = #{shopId,jdbcType=VARCHAR}, - created_at = #{createdAt,jdbcType=BIGINT}, - updated_at = #{updatedAt,jdbcType=BIGINT} - where id = #{id,jdbcType=INTEGER} - - \ No newline at end of file + + + + + + + + + + + + + + + + + + id,name,decimals_digits, + unit_type,is_system,status, + merchant_id,shop_id,created_at, + updated_at + + From 7b552a3f105eab10a5ad7dedc16cdf16bbdd96e9 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, 26 Nov 2024 10:25:18 +0800 Subject: [PATCH 14/77] =?UTF-8?q?feat:=201.=E4=B8=B4=E6=97=B6=E8=8F=9C?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=A4=9A=E6=AC=A1=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/MpCashierCartService.java | 2 +- .../cashierservice/service/OrderService.java | 112 +++++++++++------- .../impl/MpCashierCartServiceImpl.java | 5 +- 3 files changed, 73 insertions(+), 46 deletions(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/MpCashierCartService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/MpCashierCartService.java index 3d101f4..ba29a06 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/MpCashierCartService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/MpCashierCartService.java @@ -43,7 +43,7 @@ public interface MpCashierCartService extends IService { * @param shopEatTypeInfoDTO 就餐信息 * @return 购物车信息 */ - TbCashierCart selectOneCartByShopEatType(ShopEatTypeInfoDTO shopEatTypeInfoDTO, String masterId, Integer productId, Integer skuId, boolean isGift, boolean isTemp); + TbCashierCart selectOneCartByShopEatType(ShopEatTypeInfoDTO shopEatTypeInfoDTO, String masterId, Integer productId, Integer skuId, boolean isGift, boolean isTemp, String proName); /** 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 c3540ae..38a4b80 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -2044,50 +2044,76 @@ public class OrderService { public Object addTemporaryDishes(AddTemporaryDishesDTO temporaryDishesDTO) { ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(temporaryDishesDTO.getShopId(), temporaryDishesDTO.getTableId()); - TbCashierCart tbCashierCart = mpCashierCartService.selectOneCartByShopEatType(shopEatTypeInfoDTO, temporaryDishesDTO.getMasterId(), null, null, false, true); +// TbCashierCart tbCashierCart = mpCashierCartService.selectOneCartByShopEatType(shopEatTypeInfoDTO, temporaryDishesDTO.getMasterId(), +// null, null, false, true, temporaryDishesDTO.getName()); // 首次加入 - if (tbCashierCart == null) { - tbCashierCart = new TbCashierCart(); - tbCashierCart.setUseType(shopEatTypeInfoDTO.getUseType()); - tbCashierCart.setCreatedAt(System.currentTimeMillis()); - tbCashierCart.setIsSku("0"); - if (StrUtil.isNotBlank(shopEatTypeInfoDTO.getTableId())) { - tbCashierCart.setTableId(shopEatTypeInfoDTO.getTableId()); - } - tbCashierCart.setName(temporaryDishesDTO.getName()); - tbCashierCart.setSalePrice(temporaryDishesDTO.getPrice()); - tbCashierCart.setMasterId(temporaryDishesDTO.getMasterId()); - tbCashierCart.setShopId(String.valueOf(temporaryDishesDTO.getShopId())); - tbCashierCart.setTradeDay(DateUtils.getDay()); - tbCashierCart.setStatus("create"); - tbCashierCart.setIsPack("false"); - tbCashierCart.setIsGift("false"); - tbCashierCart.setTotalAmount(temporaryDishesDTO.getNum().multiply(temporaryDishesDTO.getPrice())); - tbCashierCart.setPackFee(BigDecimal.ZERO); - tbCashierCart.setTotalNumber(temporaryDishesDTO.getNum()); - tbCashierCart.setNumber(temporaryDishesDTO.getNum()); - tbCashierCart.setCategoryId(String.valueOf(temporaryDishesDTO.getCategoryId())); - tbCashierCart.setNote(temporaryDishesDTO.getNote()); - tbCashierCart.setPlatformType(OrderPlatformTypeEnum.PC.getValue()); - tbCashierCart.setIsMember(shopEatTypeInfoDTO.isMemberPrice() && temporaryDishesDTO.getVipUserId() != null ? 1 : 0); - tbCashierCart.setIsTemporary(1); - tbCashierCart.setUnit(temporaryDishesDTO.getUnit()); - mpCashierCartService.save(tbCashierCart); - - } else { - tbCashierCart.setIsMember(temporaryDishesDTO.getVipUserId() == null ? 0 : 1); - tbCashierCart.setNote(temporaryDishesDTO.getNote()); - tbCashierCart.setTotalAmount(temporaryDishesDTO.getNum().multiply(temporaryDishesDTO.getPrice())); - tbCashierCart.setPackFee(BigDecimal.ZERO); - tbCashierCart.setIsPack("false"); - tbCashierCart.setIsGift("false"); - tbCashierCart.setTotalNumber(temporaryDishesDTO.getNum()); - tbCashierCart.setNumber(temporaryDishesDTO.getNum()); - tbCashierCart.setUpdatedAt(DateUtil.date().getTime()); - tbCashierCart.setIsTemporary(1); - tbCashierCart.setUnit(temporaryDishesDTO.getUnit()); - mpCashierCartService.updateById(tbCashierCart); +// if (tbCashierCart == null) { +// tbCashierCart = new TbCashierCart(); +// tbCashierCart.setUseType(shopEatTypeInfoDTO.getUseType()); +// tbCashierCart.setCreatedAt(System.currentTimeMillis()); +// tbCashierCart.setIsSku("0"); +// if (StrUtil.isNotBlank(shopEatTypeInfoDTO.getTableId())) { +// tbCashierCart.setTableId(shopEatTypeInfoDTO.getTableId()); +// } +// tbCashierCart.setName(temporaryDishesDTO.getName()); +// tbCashierCart.setSalePrice(temporaryDishesDTO.getPrice()); +// tbCashierCart.setMasterId(temporaryDishesDTO.getMasterId()); +// tbCashierCart.setShopId(String.valueOf(temporaryDishesDTO.getShopId())); +// tbCashierCart.setTradeDay(DateUtils.getDay()); +// tbCashierCart.setStatus("create"); +// tbCashierCart.setIsPack("false"); +// tbCashierCart.setIsGift("false"); +// tbCashierCart.setTotalAmount(temporaryDishesDTO.getNum().multiply(temporaryDishesDTO.getPrice())); +// tbCashierCart.setPackFee(BigDecimal.ZERO); +// tbCashierCart.setTotalNumber(temporaryDishesDTO.getNum()); +// tbCashierCart.setNumber(temporaryDishesDTO.getNum()); +// tbCashierCart.setCategoryId(String.valueOf(temporaryDishesDTO.getCategoryId())); +// tbCashierCart.setNote(temporaryDishesDTO.getNote()); +// tbCashierCart.setPlatformType(OrderPlatformTypeEnum.PC.getValue()); +// tbCashierCart.setIsMember(shopEatTypeInfoDTO.isMemberPrice() && temporaryDishesDTO.getVipUserId() != null ? 1 : 0); +// tbCashierCart.setIsTemporary(1); +// tbCashierCart.setUnit(temporaryDishesDTO.getUnit()); +// mpCashierCartService.save(tbCashierCart); +// +// } else { + TbCashierCart tbCashierCart = new TbCashierCart(); + tbCashierCart.setUseType(shopEatTypeInfoDTO.getUseType()); + tbCashierCart.setCreatedAt(System.currentTimeMillis()); + tbCashierCart.setIsSku("0"); + if (StrUtil.isNotBlank(shopEatTypeInfoDTO.getTableId())) { + tbCashierCart.setTableId(shopEatTypeInfoDTO.getTableId()); } + tbCashierCart.setName(temporaryDishesDTO.getName()); + tbCashierCart.setSalePrice(temporaryDishesDTO.getPrice()); + tbCashierCart.setMasterId(temporaryDishesDTO.getMasterId()); + tbCashierCart.setShopId(String.valueOf(temporaryDishesDTO.getShopId())); + tbCashierCart.setTradeDay(DateUtils.getDay()); + tbCashierCart.setStatus("create"); + tbCashierCart.setIsPack("false"); + tbCashierCart.setIsGift("false"); + tbCashierCart.setTotalAmount(temporaryDishesDTO.getNum().multiply(temporaryDishesDTO.getPrice())); + tbCashierCart.setPackFee(BigDecimal.ZERO); + tbCashierCart.setTotalNumber(temporaryDishesDTO.getNum()); + tbCashierCart.setNumber(temporaryDishesDTO.getNum()); + tbCashierCart.setCategoryId(String.valueOf(temporaryDishesDTO.getCategoryId())); + tbCashierCart.setNote(temporaryDishesDTO.getNote()); + tbCashierCart.setPlatformType(OrderPlatformTypeEnum.PC.getValue()); + tbCashierCart.setIsMember(shopEatTypeInfoDTO.isMemberPrice() && temporaryDishesDTO.getVipUserId() != null ? 1 : 0); + tbCashierCart.setIsTemporary(1); + tbCashierCart.setUnit(temporaryDishesDTO.getUnit()); + tbCashierCart.setIsMember(temporaryDishesDTO.getVipUserId() == null ? 0 : 1); + tbCashierCart.setNote(temporaryDishesDTO.getNote()); + tbCashierCart.setTotalAmount(temporaryDishesDTO.getNum().multiply(temporaryDishesDTO.getPrice())); + tbCashierCart.setPackFee(BigDecimal.ZERO); + tbCashierCart.setIsPack("false"); + tbCashierCart.setIsGift("false"); + tbCashierCart.setTotalNumber(temporaryDishesDTO.getNum()); + tbCashierCart.setNumber(temporaryDishesDTO.getNum()); + tbCashierCart.setUpdatedAt(DateUtil.date().getTime()); + tbCashierCart.setIsTemporary(1); + tbCashierCart.setUnit(temporaryDishesDTO.getUnit()); + mpCashierCartService.updateById(tbCashierCart); +// } if (StrUtil.isNotBlank(temporaryDishesDTO.getTableId())) { setRedisTableCartInfo(temporaryDishesDTO.getTableId(), temporaryDishesDTO.getShopId().toString(), Collections.singletonList(tbCashierCart), true); @@ -2105,7 +2131,7 @@ public class OrderService { if (cashierCart.getSalePrice().subtract(updatePriceDTO.getAmount()).compareTo(BigDecimal.ZERO) < 0) { throw new MsgException("折扣金额不能超过单价"); } - }else { + } else { if (cashierCart.getMemberPrice().subtract(updatePriceDTO.getAmount()).compareTo(BigDecimal.ZERO) < 0) { throw new MsgException("折扣金额不能超过单价"); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpCashierCartServiceImpl.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpCashierCartServiceImpl.java index bae2c1a..012b05e 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpCashierCartServiceImpl.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpCashierCartServiceImpl.java @@ -63,7 +63,7 @@ public class MpCashierCartServiceImpl extends ServiceImpl query = new LambdaQueryWrapper() .eq(TbCashierCart::getShopId, shopEatTypeInfoDTO.getShopId()) .gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime()) @@ -73,7 +73,8 @@ public class MpCashierCartServiceImpl extends ServiceImpl q.eq(TbCashierCart::getMasterId, masterId).or().isNull(TbCashierCart::getMasterId)); if (isTemp) { - query.isNull(TbCashierCart::getProductId).isNull(TbCashierCart::getSkuId).eq(TbCashierCart::getIsTemporary, 1); + query.isNull(TbCashierCart::getProductId).isNull(TbCashierCart::getSkuId).eq(TbCashierCart::getIsTemporary, 1) + .eq(TbCashierCart::getSkuName, proName); }else { query.eq(TbCashierCart::getProductId, productId) .eq(TbCashierCart::getSkuId, skuId); From 0aab7e210e6e77b13e78eb5992456ecc7764300f 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, 26 Nov 2024 10:29:27 +0800 Subject: [PATCH 15/77] =?UTF-8?q?feat:=201.=E4=B8=B4=E6=97=B6=E8=8F=9C?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=A4=9A=E6=AC=A1=E6=B7=BB=E5=8A=A0?= 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 38a4b80..951c8bc 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -2112,7 +2112,7 @@ public class OrderService { tbCashierCart.setUpdatedAt(DateUtil.date().getTime()); tbCashierCart.setIsTemporary(1); tbCashierCart.setUnit(temporaryDishesDTO.getUnit()); - mpCashierCartService.updateById(tbCashierCart); + mpCashierCartService.save(tbCashierCart); // } if (StrUtil.isNotBlank(temporaryDishesDTO.getTableId())) { From 94285f68d03cbd5d2b003da38795a0130dc5c29c 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, 26 Nov 2024 13:43:38 +0800 Subject: [PATCH 16/77] =?UTF-8?q?feat:=201.=E5=8D=95=E5=93=81=E6=94=B9?= =?UTF-8?q?=E4=BB=B7=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/cashierservice/entity/TbCashierCart.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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 f53a3e9..9847dae 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbCashierCart.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbCashierCart.java @@ -100,11 +100,14 @@ public class TbCashierCart implements Serializable { if ("true".equals(isGift)) { totalAmount = packFee; } else { + discountSaleAmount = discountSaleAmount == null ? BigDecimal.ZERO : discountSaleAmount; + BigDecimal subtract; if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) { - totalAmount = totalNumber.multiply(memberPrice).add(packFee); + subtract = memberPrice.subtract(discountSaleAmount); } else { - totalAmount = totalNumber.multiply(discountSaleAmount != null ? discountSaleAmount : salePrice).add(packFee); + subtract = salePrice.subtract(discountSaleAmount); } + totalAmount = totalNumber.multiply(subtract.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : subtract).add(packFee); } } From 04dc7091e29df814198fe4faf1dda851393a45cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Tue, 26 Nov 2024 14:45:02 +0800 Subject: [PATCH 17/77] =?UTF-8?q?=E4=B8=B4=E6=97=B6=E8=8F=9C=E5=B0=8F?= =?UTF-8?q?=E7=A5=A8=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/cashierservice/entity/TbOrderDetail.java | 2 +- .../system/cashierservice/rabbit/print/PrinterHandler.java | 4 ++++ src/main/resources/mapper/TbOrderDetailMapper.xml | 3 ++- 3 files changed, 7 insertions(+), 2 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 f88a117..4e909fa 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java @@ -51,5 +51,5 @@ public class TbOrderDetail implements Serializable { private static final long serialVersionUID = 1L; private Integer isMember; - + private Integer isTemporary; } 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 ee2c163..95dca90 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 @@ -134,6 +134,10 @@ public abstract class PrinterHandler { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } + Integer isTemporary = ObjectUtil.defaultIfNull(it.getIsTemporary(), 0); + if(isTemporary == 1) { + it.setProductName("【临时菜】"+it.getProductName()); + } OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), NumberUtil.mul(it.getNum(),it.getPrice()).toPlainString(), remark); detailList.add(detail); diff --git a/src/main/resources/mapper/TbOrderDetailMapper.xml b/src/main/resources/mapper/TbOrderDetailMapper.xml index ba0243e..1e59c72 100644 --- a/src/main/resources/mapper/TbOrderDetailMapper.xml +++ b/src/main/resources/mapper/TbOrderDetailMapper.xml @@ -18,10 +18,11 @@ + id, order_id, shop_id, product_id, product_sku_id, num, product_name, product_sku_name, - product_img, create_time, update_time, price, price_amount,status,pack_amount,return_num + product_img, create_time, update_time, price, price_amount,status,pack_amount,return_num,is_temporary From 71a4239741b3f05dbc5c6bcafa391d271bb2ceaa 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, 26 Nov 2024 16:33:35 +0800 Subject: [PATCH 21/77] =?UTF-8?q?fix:=20=E6=8A=98=E6=89=A3=E5=8E=9F?= =?UTF-8?q?=E5=9B=A0=E5=8F=AF=E4=B8=BA=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/cashierservice/entity/dto/UpdatePriceDTO.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/UpdatePriceDTO.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/UpdatePriceDTO.java index 1d04620..b05aa64 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/UpdatePriceDTO.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/UpdatePriceDTO.java @@ -16,6 +16,6 @@ public class UpdatePriceDTO { @DecimalMin("0.01") @NotNull private BigDecimal amount; - @NotBlank(message = "折扣原因不能为空") +// @NotBlank(message = "折扣原因不能为空") private String note; } From c1dbd6861659448aa0c991d5fa101434dd46e481 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, 27 Nov 2024 15:31:12 +0800 Subject: [PATCH 22/77] =?UTF-8?q?fix:=20=E7=BE=8E=E5=9B=A2=E5=88=B8?= =?UTF-8?q?=E6=A0=B8=E9=94=80=E6=97=A0=E6=B3=95=E8=BD=ACmap=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ThirdPartyCouponServiceImpl.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/ThirdPartyCouponServiceImpl.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/ThirdPartyCouponServiceImpl.java index 47bfdf6..117e1fd 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/ThirdPartyCouponServiceImpl.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/ThirdPartyCouponServiceImpl.java @@ -31,7 +31,7 @@ public class ThirdPartyCouponServiceImpl implements ThirdPartyCouponService { } private final RestTemplate restTemplate; - private T exec(String url, Integer shopId, Object data) { + private R exec(String url, Integer shopId, T data) { // 获取店铺信息 TbShopInfo shopInfo = mpShopInfoMapper.selectById(shopId); if (shopInfo == null) { @@ -45,7 +45,12 @@ public class ThirdPartyCouponServiceImpl implements ThirdPartyCouponService { // 构造请求实体,根据 data 是否为空设置请求体 HttpEntity entity; if (data != null) { - Map map = BeanUtil.beanToMap(data); + Map map; + if (data instanceof Map) { + map = (Map) data; + }else { + map = BeanUtil.beanToMap(data, false, false); + } map.put("title", shopInfo.getShopName()); entity = new HttpEntity<>(map, headers); } else { @@ -72,7 +77,7 @@ public class ThirdPartyCouponServiceImpl implements ThirdPartyCouponService { } // 返回数据 - return (T) resp.getData(); + return (R) resp.getData(); } From 04473738b72db53bd2b102bd1ab4616a2874600b 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, 28 Nov 2024 13:57:21 +0800 Subject: [PATCH 23/77] =?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 --- .../controller/PayController.java | 21 +- .../dao/TbActivateInRecordMapper.java | 6 + .../dao/TbActivateOutRecordMapper.java | 6 + .../cashierservice/entity/TbMemberPoints.java | 72 +++ .../entity/TbMemberPointsLog.java | 70 +++ .../cashierservice/entity/TbOrderDetail.java | 5 + .../cashierservice/entity/TbOrderInfo.java | 7 + .../entity/dto/OrderInfoCouponInfoDTO.java | 14 + .../entity/dto/OrderInfoUserCouponVo.java | 11 + .../entity/dto/ReturnOrderDTO.java | 32 ++ .../entity/vo/TbUserCouponVo.java | 43 ++ .../mapper/MpProductStockDetailMapper.java | 7 + .../mapper/TbMemberPointsLogMapper.java | 16 + .../mapper/TbMemberPointsMapper.java | 16 + .../mybatis/MpShopUserMapper.java | 3 + .../rabbit/RabbitConstants.java | 8 + .../service/MpOrderDetailService.java | 10 + .../service/MpOrderInfoService.java | 4 + .../cashierservice/service/OrderService.java | 23 + .../cashierservice/service/PayService.java | 428 +++++++++++++++++- .../service/TbMemberPointsService.java | 30 ++ .../service/TbShopCouponService.java | 24 + .../impl/MpOrderDetailServiceImpl.java | 12 + .../service/impl/MpOrderInfoServiceImpl.java | 51 +++ .../impl/TbMemberPointsServiceImpl.java | 94 ++++ .../service/impl/TbShopCouponServiceImpl.java | 53 +++ .../cashierservice/util/RabbitMsgUtils.java | 7 + 27 files changed, 1044 insertions(+), 29 deletions(-) create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/entity/TbMemberPoints.java create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/entity/TbMemberPointsLog.java create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/OrderInfoCouponInfoDTO.java create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/OrderInfoUserCouponVo.java create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/ReturnOrderDTO.java create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/TbUserCouponVo.java create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/mapper/MpProductStockDetailMapper.java create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/mapper/TbMemberPointsLogMapper.java create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/mapper/TbMemberPointsMapper.java create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/service/TbMemberPointsService.java create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/service/TbShopCouponService.java create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/service/impl/TbMemberPointsServiceImpl.java create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/service/impl/TbShopCouponServiceImpl.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 d7ece6c..87c7fa0 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/controller/PayController.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/PayController.java @@ -16,6 +16,7 @@ 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.ReturnGroupOrderDto; +import com.chaozhanggui.system.cashierservice.entity.dto.ReturnOrderDTO; import com.chaozhanggui.system.cashierservice.entity.dto.VipPayDTO; import com.chaozhanggui.system.cashierservice.model.PaymentReq; import com.chaozhanggui.system.cashierservice.service.PayService; @@ -34,10 +35,7 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.time.LocalDate; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; @CrossOrigin(origins = "*") @RestController @@ -247,7 +245,20 @@ public class PayController { @RequestBody List list, @RequestParam("pwd") String pwd, @RequestParam(defaultValue = "true") boolean isOnline) { - return payService.returnOrder(list, token, pwd, isOnline); + ReturnOrderDTO returnOrderDTO = new ReturnOrderDTO(); + returnOrderDTO.setOrderId(list.get(0).getOrderId()); + returnOrderDTO.setNote(list.get(0).getRemark()); + returnOrderDTO.setPwd(pwd); + ArrayList orderDetails = new ArrayList<>(); + list.forEach(item -> { + ReturnOrderDTO.OrderDetail orderDetail = new ReturnOrderDTO.OrderDetail(); + orderDetail.setId(item.getId()); + orderDetail.setNum(item.getNum()); + orderDetails.add(orderDetail); + }); + returnOrderDTO.setOrderDetails(orderDetails); + returnOrderDTO.setIsOnline(isOnline); + return Result.success(CodeEnum.SUCCESS, payService.returnOrder(returnOrderDTO)); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbActivateInRecordMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbActivateInRecordMapper.java index 945b156..b700813 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbActivateInRecordMapper.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbActivateInRecordMapper.java @@ -2,6 +2,7 @@ package com.chaozhanggui.system.cashierservice.dao; import com.chaozhanggui.system.cashierservice.entity.TbActivateInRecord; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Update; import org.springframework.data.domain.Pageable; import java.util.List; @@ -64,5 +65,10 @@ public interface TbActivateInRecordMapper { */ int deleteById(Integer id); + + @Update("update tb_activate_in_record" + + " set over_num = #{overNum}" + + " where id = #{id}") + int updateOverNum(@Param("id") Integer id, @Param("overNum") Integer overNum); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbActivateOutRecordMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbActivateOutRecordMapper.java index 82baf85..f595382 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbActivateOutRecordMapper.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbActivateOutRecordMapper.java @@ -2,6 +2,7 @@ package com.chaozhanggui.system.cashierservice.dao; import com.chaozhanggui.system.cashierservice.entity.TbActivateOutRecord; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Update; import org.springframework.data.domain.Pageable; import java.util.List; @@ -64,5 +65,10 @@ public interface TbActivateOutRecordMapper { */ int deleteById(Integer id); + + @Update("update tb_activate_out_record" + + " set ref_num = ref_num + #{refNum}" + + " where id = #{id}") + int updateRefNum(@Param("id") Integer id, @Param("refNum") Integer refNum); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbMemberPoints.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbMemberPoints.java new file mode 100644 index 0000000..74006ef --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbMemberPoints.java @@ -0,0 +1,72 @@ +package com.chaozhanggui.system.cashierservice.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 会员积分 + * + * @author Tankaikai tankaikai@aliyun.com + * @since 2.0 2024-10-25 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("tb_shop_user") +public class TbMemberPoints { + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(type = IdType.AUTO) + private Long id; + /** + * 店铺id + */ + private Long shopId; + /** + * 会员id + */ + @TableField(value = "id", insertStrategy = FieldStrategy.NEVER, updateStrategy = FieldStrategy.NEVER) + private Long memberId; + /** + * 会员名称 + */ + @TableField("name") + private String memberName; + /** + * 会员头像 + */ + @TableField("head_img") + private String avatarUrl; + /** + * 手机号码 + */ + @TableField("telephone") + private String mobile; + /** + * 账户积分 + */ + @TableField("account_points") + private Integer accountPoints; + /** + * 最近一次积分变动时间 + */ + @TableField("last_points_change_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date lastPointsChangeTime; + /** + * 最近一次浮动积分 + */ + @TableField("last_float_points") + private Integer lastFloatPoints; + /** + * 是否会员 1-是 0-否 + */ + @TableField("is_vip") + private Integer vip; +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbMemberPointsLog.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbMemberPointsLog.java new file mode 100644 index 0000000..42c3612 --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbMemberPointsLog.java @@ -0,0 +1,70 @@ +package com.chaozhanggui.system.cashierservice.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 会员积分变动记录 + * + * @author Tankaikai tankaikai@aliyun.com + * @since 2.0 2024-10-25 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("tb_member_points_log") +public class TbMemberPointsLog { + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(type = IdType.AUTO) + private Long id; + /** + * 店铺id + */ + private Long shopId; + /** + * 会员id + */ + private Long memberId; + /** + * 会员名称 + */ + private String memberName; + /** + * 会员头像 + */ + private String avatarUrl; + /** + * 摘要信息(如:兑换某个商品/消费多少钱/充值多少钱/新会员赠送积分等) + */ + private String content; + /** + * 订单编号 + */ + private String orderNo; + /** + * 手机号码 + */ + private String mobile; + /** + * 浮动类型 add-累加 subtract-扣减 + */ + private String floatType; + /** + * 浮动积分(非0正负数) + */ + private Integer floatPoints; + /** + * 创建时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; +} 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 6b91d47..f109164 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java @@ -53,5 +53,10 @@ public class TbOrderDetail implements Serializable { private Integer isMember; private Integer isTemporary; private Integer isThirdCoupon; + private Integer userCouponId; + private String useCouponInfo; + private BigDecimal canReturnAmount; + private BigDecimal returnAmount; + } 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 afdf294..ffbf016 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderInfo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderInfo.java @@ -117,6 +117,11 @@ public class TbOrderInfo implements Serializable { private static final long serialVersionUID = 1L; private int isPostpaid; + private String couponInfoList; + private BigDecimal fullCouponDiscountAmount; + private BigDecimal pointsDiscountAmount; + private String refundRemark; + private Integer pointsNum; public TbOrderInfo(){ super(); @@ -181,4 +186,6 @@ public class TbOrderInfo implements Serializable { this.payType=payType; this.tableName=tableName; } + + } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/OrderInfoCouponInfoDTO.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/OrderInfoCouponInfoDTO.java new file mode 100644 index 0000000..b961219 --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/OrderInfoCouponInfoDTO.java @@ -0,0 +1,14 @@ +package com.chaozhanggui.system.cashierservice.entity.dto; + +import com.chaozhanggui.system.cashierservice.entity.TbActivateOutRecord; +import lombok.Data; + +import java.util.Collection; +import java.util.List; + +@Data +public class OrderInfoCouponInfoDTO { + private List outRecordList; + private Collection fullReductionCoupon; + private Collection productCoupon; +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/OrderInfoUserCouponVo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/OrderInfoUserCouponVo.java new file mode 100644 index 0000000..c99a42e --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/OrderInfoUserCouponVo.java @@ -0,0 +1,11 @@ +package com.chaozhanggui.system.cashierservice.entity.dto; + +import com.chaozhanggui.system.cashierservice.entity.vo.TbUserCouponVo; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class OrderInfoUserCouponVo extends TbUserCouponVo { + private int returnNum = 0; +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/ReturnOrderDTO.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/ReturnOrderDTO.java new file mode 100644 index 0000000..47c8842 --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/ReturnOrderDTO.java @@ -0,0 +1,32 @@ +package com.chaozhanggui.system.cashierservice.entity.dto; + +import lombok.Data; + +import javax.validation.Valid; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.List; + +@Data +public class ReturnOrderDTO { + + @Data + public static class OrderDetail{ + @NotNull + private Integer id; + @NotNull + @Min(1) + private BigDecimal num; + } + @NotNull + private Integer orderId; + @NotEmpty + private String note; +// @NotEmpty + private String pwd; + @Valid + private List orderDetails; + private Boolean isOnline; +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/TbUserCouponVo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/TbUserCouponVo.java new file mode 100644 index 0000000..430e3ae --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/TbUserCouponVo.java @@ -0,0 +1,43 @@ +package com.chaozhanggui.system.cashierservice.entity.vo; + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class TbUserCouponVo { + private Integer id; + private BigDecimal fullAmount; + private BigDecimal discountAmount; + private Integer couponId; + private Integer proId; + // 商品名称 + private String productName; + private String productCover; + //优惠券名称 + private String name; + + //优惠券类型 1 满减 2 商品券 + private Integer type; + //数量 + private Integer num; + //到期时间 + private Date endTime; + private Long expireTime; + private String useRestrictions; + private boolean isUse = false; + //当前使用数量 + private BigDecimal currentUseNum; + private Integer finalUseNum; + private BigDecimal finalDiscountAmount = new BigDecimal(0); + + + public void setEndTime(Date endTime) { + this.endTime = endTime; + if(endTime!=null){ + expireTime=endTime.getTime(); + } + } + +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/mapper/MpProductStockDetailMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/mapper/MpProductStockDetailMapper.java new file mode 100644 index 0000000..8482811 --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/mapper/MpProductStockDetailMapper.java @@ -0,0 +1,7 @@ +package com.chaozhanggui.system.cashierservice.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.chaozhanggui.system.cashierservice.entity.TbProductStockDetail; + +public interface MpProductStockDetailMapper extends BaseMapper { +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/mapper/TbMemberPointsLogMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/mapper/TbMemberPointsLogMapper.java new file mode 100644 index 0000000..201fdb6 --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/mapper/TbMemberPointsLogMapper.java @@ -0,0 +1,16 @@ +package com.chaozhanggui.system.cashierservice.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.chaozhanggui.system.cashierservice.entity.TbMemberPointsLog; +import org.apache.ibatis.annotations.Mapper; + +/** + * 会员积分变动记录 + * + * @author Tankaikai tankaikai@aliyun.com + * @since 2.0 2024-10-25 + */ +@Mapper +public interface TbMemberPointsLogMapper extends BaseMapper { + +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/mapper/TbMemberPointsMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/mapper/TbMemberPointsMapper.java new file mode 100644 index 0000000..7b24d5c --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/mapper/TbMemberPointsMapper.java @@ -0,0 +1,16 @@ +package com.chaozhanggui.system.cashierservice.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.chaozhanggui.system.cashierservice.entity.TbMemberPoints; +import org.apache.ibatis.annotations.Mapper; + +/** + * 会员积分 + * + * @author Tankaikai tankaikai@aliyun.com + * @since 2.0 2024-10-25 + */ +@Mapper +public interface TbMemberPointsMapper extends BaseMapper { + +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/mybatis/MpShopUserMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/mybatis/MpShopUserMapper.java index 8ae5f05..2b6e9bb 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/mybatis/MpShopUserMapper.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/mybatis/MpShopUserMapper.java @@ -10,4 +10,7 @@ import java.math.BigDecimal; public interface MpShopUserMapper extends BaseMapper { @Update("update tb_shop_user set amount=amount-#{orderAmount}, consume_amount=consume_amount+#{orderAmount} where id=#{vipUserId} and amount-#{orderAmount} >= 0") long decrBalance(@Param("vipUserId") Integer vipUserId, @Param("orderAmount") BigDecimal orderAmount); + + @Update("update tb_shop_user set amount=amount+#{returnAmount}, consume_amount=consume_amount-#{returnAmount}, updated_at=#{current} where id=#{userId}") + void incrBalance(@Param("userId") Integer userId, @Param("shopId") Integer shopId, @Param("returnAmount") BigDecimal returnAmount, @Param("current") long current); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConstants.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConstants.java index 9b792b8..db1e8a5 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConstants.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/RabbitConstants.java @@ -70,4 +70,12 @@ public interface RabbitConstants { // 排号打印 String QUEUE_PRINT_CALL_TABLE = "queue.print.call.table"; String ROUTING_KEY_CALL_TABLE = "routing.call.table"; + // 会员余额记录 + String EXCHANGE_BALANCE = "balance_put"; + String ROUTING_KEY_BALANCE = "balance_routingkey_put"; + + + // 耗材 + String EXCHANGE_CONS = "cons_collect_put"; + String ROUTING_KEY_CONS = "cons_collect_routingkey_put"; } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderDetailService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderDetailService.java index 7a0113a..9910a74 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderDetailService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderDetailService.java @@ -49,5 +49,15 @@ public interface MpOrderDetailService extends IService { boolean updateFieldByCartId(SFunction field, Object val, List cartIds); + + /** + * 根据orderId和id修改detail状态 + * @param oldOrderStatusEnums 原始订单状态 + * @param orderStatusEnums 状态 + * @param orderId 订单id + * @param orderDetails detailIds + * @return 影响数量 + */ + boolean updateStatusByOrderIdAndIds(TableConstant.OrderInfo.Status oldOrderStatusEnums, TableConstant.OrderInfo.Status orderStatusEnums, Integer orderId, List orderDetails); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderInfoService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderInfoService.java index bc11665..519a76f 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderInfoService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/MpOrderInfoService.java @@ -27,5 +27,9 @@ public interface MpOrderInfoService extends IService { boolean incrAmount(Integer orderId, BigDecimal subtract); + /** + * 储值卡退款 + */ + void depositReturn(Integer userId, Integer shopId, BigDecimal returnAmount); } 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 1ecb37c..06accc0 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -44,6 +44,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; @@ -1051,6 +1052,7 @@ public class OrderService { orderDetail.setPackAmount(BigDecimal.ZERO); } } + updateOrderDetailCanReturn(orderDetails, orderInfo); mpOrderDetailService.saveOrUpdateBatch(orderDetails); // 删除已经移除购物车的商品 @@ -1111,6 +1113,27 @@ public class OrderService { return Result.success(CodeEnum.SUCCESS, orderInfo); } + private void updateOrderDetailCanReturn(List orderDetailList, TbOrderInfo orderInfo) { + orderDetailList = orderDetailList.stream().filter(item -> TableConstant.OrderInfo.Status.UNPAID.equalsVals(item.getStatus())).collect(Collectors.toList()); + BigDecimal totalAmount = BigDecimal.ZERO; + BigDecimal lastAmount = BigDecimal.ZERO; + BigDecimal lastReturnAmount = BigDecimal.ZERO; + BigDecimal orderAmount = orderInfo.getOrderAmount(); + for (TbOrderDetail orderDetail : orderDetailList) { + totalAmount = totalAmount.add(orderDetail.getPriceAmount()); + } + for (TbOrderDetail item : orderDetailList) { + if (StrUtil.isNotBlank(orderInfo.getCouponInfoList()) || orderInfo.getPointsNum() != null) { + BigDecimal canReturnAmount = item.getPriceAmount().divide(totalAmount.subtract(lastAmount), 10, RoundingMode.HALF_DOWN) + .multiply(orderAmount.subtract(lastReturnAmount)).setScale(2, RoundingMode.HALF_DOWN); + lastReturnAmount = canReturnAmount; + lastAmount = item.getPriceAmount(); + item.setCanReturnAmount(canReturnAmount); + } else { + item.setCanReturnAmount(item.getPriceAmount()); + } + } + } /** * 获取当前台桌当前下单次数 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 181aa24..489a943 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java @@ -1,5 +1,6 @@ package com.chaozhanggui.system.cashierservice.service; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.ObjectUtil; @@ -14,17 +15,18 @@ 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.OrderInfoCouponInfoDTO; import com.chaozhanggui.system.cashierservice.entity.dto.ReturnGroupOrderDto; +import com.chaozhanggui.system.cashierservice.entity.dto.ReturnOrderDTO; import com.chaozhanggui.system.cashierservice.entity.po.OrderDetailPo; import com.chaozhanggui.system.cashierservice.exception.MsgException; import com.chaozhanggui.system.cashierservice.exception.NotPrintException; +import com.chaozhanggui.system.cashierservice.mapper.MpProductStockDetailMapper; +import com.chaozhanggui.system.cashierservice.mapper.MpShopUnitMapper; import com.chaozhanggui.system.cashierservice.model.ReturnOrderReq; import com.chaozhanggui.system.cashierservice.model.ScanPayReq; import com.chaozhanggui.system.cashierservice.model.TradeQueryReq; -import com.chaozhanggui.system.cashierservice.mybatis.MPOrderDetailMapper; -import com.chaozhanggui.system.cashierservice.mybatis.MpShopTableMapper; -import com.chaozhanggui.system.cashierservice.mybatis.MpShopUserFlowMapper; -import com.chaozhanggui.system.cashierservice.mybatis.MpShopUserMapper; +import com.chaozhanggui.system.cashierservice.mybatis.*; import com.chaozhanggui.system.cashierservice.rabbit.RabbitProducer; import com.chaozhanggui.system.cashierservice.sign.CodeEnum; import com.chaozhanggui.system.cashierservice.sign.Result; @@ -55,6 +57,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; import static com.chaozhanggui.system.cashierservice.sign.CodeEnum.ACCOUNTEIXST; import static com.chaozhanggui.system.cashierservice.sign.CodeEnum.SUCCESS; @@ -137,13 +140,29 @@ public class PayService { private PlatformTransactionManager transactionManager; private final MpCashierCartService mpCashierCartService; + private final TbShopCouponService shopCouponService; + private final MpOrderDetailService mpOrderDetailService; + private final MpShopUnitMapper mpShopUnitMapper; + private final MpProductStockDetailMapper mpProductStockDetailMapper; + private final MpOrderInfoService mpOrderInfoService; + private final TbMemberPointsService memberPointsService; + + private final Utils utils; + @Autowired + private MPOrderInfoMapper mPOrderInfoMapper; - public PayService(RedisTemplate redisTemplate, MpCashierCartService mpCashierCartService, Utils utils) { + public PayService(RedisTemplate redisTemplate, MpCashierCartService mpCashierCartService, TbShopCouponService shopCouponService, MpOrderDetailService mpOrderDetailService, MpShopUnitMapper mpShopUnitMapper, MpProductStockDetailMapper mpProductStockDetailMapper, MpOrderInfoService mpOrderInfoService, Utils utils) { this.redisTemplate = redisTemplate; this.mpCashierCartService = mpCashierCartService; + this.shopCouponService = shopCouponService; + this.mpOrderDetailService = mpOrderDetailService; + this.mpShopUnitMapper = mpShopUnitMapper; + this.mpProductStockDetailMapper = mpProductStockDetailMapper; + this.mpOrderInfoService = mpOrderInfoService; this.utils = utils; + memberPointsService = null; } public static void main(String[] args) { @@ -151,7 +170,7 @@ public class PayService { } public Result queryPayType(String shopId) { - return Result.success(CodeEnum.SUCCESS, tbShopPayTypeMapper.selectByShopId(shopId)); + return Result.success(SUCCESS, tbShopPayTypeMapper.selectByShopId(shopId)); } private void clearTableInfoCache(TbOrderInfo orderInfo) { @@ -355,7 +374,7 @@ public class PayService { redisUtil.del(tableCartKey); clearTableInfoCache(orderInfo); - return Result.success(CodeEnum.SUCCESS, object.getJSONObject("data")); + return Result.success(SUCCESS, object.getJSONObject("data")); } else { String status = ObjectUtil.isNotEmpty(object.getJSONObject("data")) ? object.getJSONObject("data").getString("status") : null; if (ObjectUtil.isNotNull(status) && "7".equals(status)) { @@ -558,7 +577,7 @@ public class PayService { } } - return Result.success(CodeEnum.SUCCESS, orderInfo); + return Result.success(SUCCESS, orderInfo); } @@ -719,7 +738,7 @@ public class PayService { redisUtil.del(tableCartKey); clearTableInfoCache(orderInfo); - return Result.success(CodeEnum.SUCCESS); + return Result.success(SUCCESS); } @Transactional(rollbackFor = Exception.class) @@ -853,7 +872,7 @@ public class PayService { producer.balance(baObj.toString()); clearTableInfoCache(orderInfo); - return Result.success(CodeEnum.SUCCESS); + return Result.success(SUCCESS); } public Result vipPay(Integer orderId, String token, Integer vipUserId, BigDecimal payAmount, BigDecimal discountAmount) { @@ -963,7 +982,7 @@ public class PayService { redisUtil.del(tableCartKey); clearTableInfoCache(orderInfo); - return Result.success(CodeEnum.SUCCESS); + return Result.success(SUCCESS); } @@ -1058,7 +1077,7 @@ public class PayService { redisUtil.del(tableCartKey); clearTableInfoCache(orderInfo); - return Result.success(CodeEnum.SUCCESS); + return Result.success(SUCCESS); } @Transactional(rollbackFor = Exception.class) @@ -1146,7 +1165,368 @@ public class PayService { clearTableInfoCache(orderInfo); - return Result.success(CodeEnum.SUCCESS); + return Result.success(SUCCESS); + } + + private HashMap updateReturnOrderInfo(ReturnOrderDTO returnOrderDTO, TbOrderInfo oldOrderInfo, boolean isOnline) { + String couponInfoList = oldOrderInfo.getCouponInfoList(); + OrderInfoCouponInfoDTO couponInfoDTO = null; + if (StrUtil.isNotBlank(couponInfoList)) { + couponInfoDTO = JSONObject.parseObject(couponInfoList, OrderInfoCouponInfoDTO.class); + } + ArrayList detailIds = new ArrayList<>(); + HashMap returnNumMap = new HashMap<>(); + returnOrderDTO.getOrderDetails().forEach(item -> { + detailIds.add(item.getId()); + returnNumMap.put(item.getId().toString(), item.getNum()); + }); + List detailList = mPOrderDetailMapper.selectList(new LambdaQueryWrapper() +// .eq(TbOrderDetail::getShopId, returnOrderDTO.getShopId()) + .eq(TbOrderDetail::getStatus, "closed") + .eq(TbOrderDetail::getOrderId, returnOrderDTO.getOrderId()) + .in(TbOrderDetail::getId, detailIds) + .orderByDesc(TbOrderDetail::getUserCouponId)); + if (detailList.size() != returnOrderDTO.getOrderDetails().size()) { + throw new MsgException("订单明细数量不一致"); + } + + HashMap data = new HashMap<>(); + BigDecimal returnAmount = BigDecimal.ZERO; + BigDecimal packAMount = BigDecimal.ZERO; + BigDecimal saleAmount = BigDecimal.ZERO; + ArrayList remainOrderDetailList = new ArrayList<>(); + boolean hasNormalReturn = false; + for (TbOrderDetail orderDetail : detailList) { + // 原始金额 + BigDecimal originalAmount = orderDetail.getPriceAmount(); + BigDecimal originalPackAmount = orderDetail.getPackAmount(); + // 退款数量 + BigDecimal returnNum = returnNumMap.get(orderDetail.getId().toString()); + // 剩余数量 + BigDecimal remainNum = orderDetail.getNum().subtract(returnNum); + if (remainNum.compareTo(BigDecimal.ZERO) < 0) { + throw new MsgException(StrUtil.format("{}最多可退数量为: {}", orderDetail.getProductName(), orderDetail.getNum())); + } + + // 将未退款的剩余订单详情重新生成记录 + BigDecimal packFee = orderDetail.getPackAmount().divide(orderDetail.getNum(), RoundingMode.HALF_UP); + BigDecimal returnPackFee = packFee.multiply(returnNum); + BigDecimal currentDetailAMount = BigDecimal.ZERO; + // 优惠券抵扣商品直接退券 + if (StrUtil.isNotBlank(orderDetail.getUseCouponInfo())) { + data.put("isCouponDiscount", true); + TbActivateOutRecord outRecord = JSONObject.parseObject(orderDetail.getUseCouponInfo(), TbActivateOutRecord.class); + outRecord.setRefNum(returnNum.intValue()); + shopCouponService.refund(CollUtil.newArrayList(outRecord)); + currentDetailAMount = returnNum.multiply(orderDetail.getPrice()) + .add(returnPackFee); + // 移除使用的券 + couponInfoDTO.getProductCoupon().forEach(item -> { + if (Objects.equals(item.getId(), outRecord.getGiveId())) { + item.setReturnNum(item.getReturnNum() + outRecord.getRefNum()); + } + }); + + // 使用了满减或积分,获取普通付款商品计算退款比例,退部分现金 + } else if (oldOrderInfo.getFullCouponDiscountAmount().compareTo(BigDecimal.ZERO) > 0 || oldOrderInfo.getPointsDiscountAmount().compareTo(BigDecimal.ZERO) > 0) { + hasNormalReturn = true; + // 计算当前商品占比 + returnAmount = calcDetailReturnAmount(orderDetail, returnNum); + currentDetailAMount = orderDetail.getPriceAmount().divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) + .multiply(returnNum).setScale(2, RoundingMode.HALF_DOWN); + if (oldOrderInfo.getRefundAmount() == null) { + oldOrderInfo.setRefundAmount(BigDecimal.ZERO); + } + +// if (ratio.compareTo(BigDecimal.ONE) == 0) { +// returnAmount = oldOrderInfo.getPayAmount().subtract(oldOrderInfo.getRefundAmount()); +// }else { +// returnAmount = returnAmount.add(oldOrderInfo.getPayAmount().subtract(oldOrderInfo.getRefundAmount()).multiply(ratio)); +// } + saleAmount = saleAmount.add(orderDetail.getPrice()); + packAMount = packAMount.add(orderDetail.getPackAmount() + .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) + .multiply(returnNum)).setScale(2, RoundingMode.HALF_UP); + + } else { + hasNormalReturn = true; + saleAmount = saleAmount.add(orderDetail.getPrice()); + if (remainNum.compareTo(BigDecimal.ZERO) <= 0) { + returnAmount = orderDetail.getPriceAmount(); + packAMount = orderDetail.getPackAmount(); + } else { + currentDetailAMount = orderDetail.getPriceAmount() + .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) + .multiply(returnNum).setScale(2, RoundingMode.HALF_UP); + returnAmount = returnAmount.add(currentDetailAMount); + packAMount = packAMount.add(orderDetail.getPackAmount() + .divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP) + .multiply(returnNum)).setScale(2, RoundingMode.HALF_UP); + } + } + returnAmount = returnAmount.setScale(2, RoundingMode.HALF_DOWN); + + if (remainNum.compareTo(BigDecimal.ZERO) > 0) { + // 单个打包费 + TbOrderDetail remainOrderDetail = new TbOrderDetail(); + BeanUtil.copyProperties(remainOrderDetail, orderDetail); + remainOrderDetail.setNum(remainNum); + remainOrderDetail.setPriceAmount(originalAmount.subtract(returnAmount)); + remainOrderDetail.setPackAmount(originalPackAmount.subtract(returnPackFee)); + remainOrderDetail.setReturnNum(BigDecimal.ZERO); + remainOrderDetail.setId(null); + remainOrderDetail.setCanReturnAmount(remainOrderDetail.getCanReturnAmount().subtract(returnAmount)); + remainOrderDetailList.add(remainOrderDetail); + orderDetail.setCanReturnAmount(returnAmount); + } + + orderDetail.setNum(returnNum); + orderDetail.setPriceAmount(currentDetailAMount); + orderDetail.setPackAmount(returnPackFee); + orderDetail.setReturnNum(returnNum); + orderDetail.setReturnAmount(returnAmount); +// orderDetail.setStatus(isOnline ? "refunding" : "refund"); + orderDetail.setStatus("refund"); + } + + if (returnAmount.compareTo(BigDecimal.ZERO) < 0) { + throw new MsgException("退款金额为负数有误"); + } + + if (hasNormalReturn && returnAmount.compareTo(new BigDecimal("0")) <= 0 && oldOrderInfo.getPayAmount().compareTo(BigDecimal.ZERO) != 0) { + throw new MsgException("退款金额必须大于0"); + } + + oldOrderInfo.setCouponInfoList(JSONObject.toJSONString(couponInfoDTO)); + + // 保存剩余未退款的订单详情 + if (!remainOrderDetailList.isEmpty()) { + mpOrderDetailService.saveBatch(remainOrderDetailList); + } + +// 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); + + + updateStockAndRecord(detailList); + mpOrderDetailService.updateBatchById(detailList); + data.put("returnOrder", returnOrder); + data.put("returnAmount", returnAmount); + data.put("hasNormalReturn", hasNormalReturn); + return data; + } + + private void updateStockAndRecord(List orderDetailList) { + // 更新商品库存 + for (TbOrderDetail detail : orderDetailList) { + TbProductSku productSku = productSkuMapper.selectByPrimaryKey(detail.getProductSkuId()); + TbProduct product = productMapper.selectByPrimaryKey(detail.getProductId()); + + TbProductStockDetail tbProductStockDetail = new TbProductStockDetail(); + tbProductStockDetail.setCreatedAt(System.currentTimeMillis()); + tbProductStockDetail.setUpdatedAt(System.currentTimeMillis()); + tbProductStockDetail.setShopId(detail.getShopId().toString()); + tbProductStockDetail.setSourcePath("NORMAL"); + tbProductStockDetail.setType("退单"); + tbProductStockDetail.setSubType((byte) 1); + tbProductStockDetail.setRemark("退单: " + detail.getOrderId()); + tbProductStockDetail.setOrderId(String.valueOf(detail.getOrderId())); + + if (ObjectUtil.isNotEmpty(product)) { + TbShopUnit shopUnit = mpShopUnitMapper.selectById(product.getUnitId()); + tbProductStockDetail.setProductName(product.getName()); + tbProductStockDetail.setIsStock(Integer.valueOf(product.getIsStock())); + tbProductStockDetail.setStockSnap(product.getSelectSpec()); + tbProductStockDetail.setUnitName(shopUnit.getName()); + tbProductStockDetail.setProductId(product.getId().toString()); + + productMapper.incrStock(String.valueOf(product.getId()), detail.getNum()); + tbProductStockDetail.setLeftNumber(product.getStockNumber()); + tbProductStockDetail.setStockNumber(detail.getNum().doubleValue()); + + productSkuMapper.decrRealSalesNumber(productSku.getId(), detail.getNum().intValue()); + } + + mpProductStockDetailMapper.insert(tbProductStockDetail); + } + } + + private void returnCoupon(TbOrderInfo orderInfo, boolean resetInfo) { + // 返还优惠券 + if (StrUtil.isNotBlank(orderInfo.getCouponInfoList())) { + OrderInfoCouponInfoDTO couponInfoDTO = JSONObject.parseObject(orderInfo.getCouponInfoList(), OrderInfoCouponInfoDTO.class); + ArrayList couponIds = new ArrayList<>(); + couponInfoDTO.getProductCoupon().forEach(item -> { + if (item.getReturnNum() >= item.getFinalUseNum()) { + couponIds.add(item.getId()); + } + }); + // 券返还 + if (!couponInfoDTO.getOutRecordList().isEmpty()) { + ArrayList finalReturnList = new ArrayList<>(); + couponInfoDTO.getOutRecordList().forEach(item -> { + if (!couponIds.contains(item.getGiveId())) { + item.setRefNum(item.getUseNum()); + finalReturnList.add(item); + } + }); + shopCouponService.refund(finalReturnList); + if (resetInfo) { + couponInfoDTO.setOutRecordList(new ArrayList<>()); + orderInfo.setCouponInfoList(JSONObject.toJSONString(couponInfoDTO)); + } + } + } + + } + + + @Transactional + public Object returnOrder(ReturnOrderDTO returnOrderDTO) { + TbOrderInfo orderInfo = mPOrderInfoMapper.selectOne(new LambdaQueryWrapper() + .eq(TbOrderInfo::getId, returnOrderDTO.getOrderId()) + .in(TbOrderInfo::getStatus, TableConstant.OrderInfo.Status.REFUND.getValue(), + TableConstant.OrderInfo.Status.CLOSED.getValue()) +// .eq(TbOrderInfo::getStatus, "closed") + ); + if (orderInfo == null) { + throw new MsgException("订单不处于可退款状态"); + } + + TbShopInfo shopInfo = tbShopInfoMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getShopId())); + if (shopInfo == null) { + throw new MsgException("店铺信息不存在"); + } + + if ("1".equals(shopInfo.getIsReturn())) { + // TODO 密码校验 + } + String payType = orderInfo.getPayType(); + HashMap returnInfoData = updateReturnOrderInfo(returnOrderDTO, orderInfo, "scanCode".equals(payType) || "wx_lite".equals(payType)); + TbOrderInfo returnOrderInfo = (TbOrderInfo) returnInfoData.get("returnOrder"); + BigDecimal returnAmount = (BigDecimal) returnInfoData.get("returnAmount"); + boolean hasNormalReturn = (boolean) returnInfoData.get("hasNormalReturn"); + String shopId = orderInfo.getShopId(); + +// // 线上退款 + 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()) { + mpOrderDetailService.updateStatusByOrderIdAndIds(TableConstant.OrderInfo.Status.REFUNDING, TableConstant.OrderInfo.Status.REFUND, + returnOrderDTO.getOrderId(), returnOrderDTO.getOrderDetails().stream().map(ReturnOrderDTO.OrderDetail::getId).collect(Collectors.toList())); + + }else { + TbMerchantThirdApply thirdApply = tbMerchantThirdApplyMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getMerchantId())); + MsgException.checkNull(thirdApply, "支付参数配置错误"); + + if ("ysk".equals(thirdPayType)) { + ReturnOrderReq req = new ReturnOrderReq(); + req.setAppId(thirdApply.getAppId()); + req.setTimestamp(System.currentTimeMillis()); + req.setOrderNumber(orderInfo.getPayOrderNo()); + req.setAmount(String.format("%.2f", returnOrderInfo.getPayAmount().setScale(2, RoundingMode.DOWN))); + req.setMercRefundNo(orderInfo.getOrderNo()); + req.setRefundReason("退货"); + req.setPayPassword(thirdApply.getPayPassword()); + Map map = BeanUtil.transBean2Map(req); + req.setSign(MD5Util.encrypt(map, thirdApply.getAppToken(), true)); + log.info("merchantOrderReturn req:{}", JSONUtil.toJsonStr(req)); + ResponseEntity response = restTemplate.postForEntity(gateWayUrl.concat("merchantOrder/returnOrder"), req, String.class); + log.info("merchantOrderReturn:{}", response.getBody()); + if (response.getStatusCodeValue() == 200 && ObjectUtil.isNotEmpty(response.getBody())) { + JSONObject object = JSONObject.parseObject(response.getBody()); + if (!object.get("code").equals("0")) { + MsgException.check(true, "退款渠道调用失败"); + } +// newOrderInfo.setPayOrderNo(object.getJSONObject("data").getString("refundOrderNumber")); + } + } else { + + TbOrderPayment payment = tbOrderPaymentMapper.selectByOrderId(String.valueOf(orderInfo.getId())); + PublicResp publicResp = thirdPayService.returnOrder(url, thirdApply.getAppId(), + returnOrderInfo.getOrderNo(), payment.getTradeNumber(), null, "订单退款", + returnOrderInfo.getPayAmount().setScale(2, RoundingMode.DOWN).multiply(new BigDecimal(100)).longValue(), callBack, null, thirdApply.getAppToken()); + + if (ObjectUtil.isNotNull(publicResp) && ObjectUtil.isNotEmpty(publicResp)) { + if ("000000".equals(publicResp.getCode())) { + if (!"SUCCESS".equals(publicResp.getObjData().getState()) && !publicResp.getObjData().getState().equals("ING")) { + MsgException.check(true, "退款渠道调用失败"); + } + } else { + MsgException.check(true, "退款渠道调用失败"); + } + } + + } + returnOrderInfo.setStatus("refund"); + mPOrderInfoMapper.updateById(returnOrderInfo); + } + + // 储值卡支付退款 + } else if ("deposit".equals(payType)) { + mpOrderInfoService.depositReturn(Integer.valueOf(orderInfo.getUserId()), Integer.valueOf(orderInfo.getShopId()), returnAmount); + mpOrderDetailService.updateStatusByOrderIdAndIds(TableConstant.OrderInfo.Status.REFUNDING, TableConstant.OrderInfo.Status.REFUND, + returnOrderDTO.getOrderId(), returnOrderDTO.getOrderDetails().stream().map(ReturnOrderDTO.OrderDetail::getId).collect(Collectors.toList())); + } else if ("cash".equals(payType)) { + mpOrderDetailService.updateStatusByOrderIdAndIds(TableConstant.OrderInfo.Status.REFUNDING, TableConstant.OrderInfo.Status.REFUND, + returnOrderDTO.getOrderId(), returnOrderDTO.getOrderDetails().stream().map(ReturnOrderDTO.OrderDetail::getId).collect(Collectors.toList())); + } + orderInfo.setStatus(TableConstant.OrderInfo.Status.CLOSED.getValue()); + + // 订单金额全退,退优惠券以及积分 + if (orderInfo.getPayAmount().compareTo(orderInfo.getRefundAmount()) <= 0) { + long count = mpOrderDetailService.count(new LambdaQueryWrapper() + .eq(TbOrderDetail::getOrderId, orderInfo.getId()) + .eq(TbOrderDetail::getStatus, TableConstant.OrderInfo.Status.CLOSED)); + if (count == 0) { + returnCoupon(orderInfo, true); + // 返还积分 + memberPointsService.addPoints(Long.valueOf(orderInfo.getMemberId()), orderInfo.getPointsNum(), + "用户退款订单积分返还: " + orderInfo.getPointsNum() + "积分", Long.valueOf(orderInfo.getId())); + } + } + mPOrderInfoMapper.updateById(orderInfo); + // 打印退款小票 +// producer.printMechine(newOrderInfo.getId().toString()); + producer.printMechine(returnOrderInfo.getId().toString()); + + //修改耗材数据 + JSONObject jsonObject1 = new JSONObject(); + jsonObject1.put("orderId", returnOrderInfo.getId()); + jsonObject1.put("type", "delete"); + rabbitMsgUtils.updateCons(jsonObject1); + return true; + } + + private BigDecimal calcDetailReturnAmount(TbOrderDetail orderDetail, BigDecimal returnNum) { + if (orderDetail.getNum().compareTo(returnNum) == 0) { + return orderDetail.getCanReturnAmount(); + } + if (returnNum.compareTo(BigDecimal.ONE) == 0 && + orderDetail.getNum().compareTo(BigDecimal.ONE) > 0 && + orderDetail.getCanReturnAmount().compareTo(new BigDecimal("0.01")) <= 0) { + throw new MsgException(orderDetail.getProductName() + "总金额为0.01,请选择全部商品数量退回"); + } + return orderDetail.getCanReturnAmount().divide(orderDetail.getNum(), 10, RoundingMode.HALF_DOWN).multiply(returnNum).setScale(2, RoundingMode.HALF_DOWN); } @Transactional(rollbackFor = Exception.class) @@ -1177,7 +1557,7 @@ public class PayService { // // TbmerchantAccount account = tbmerchantAccountMapper.selectByPrimaryKey(Integer.valueOf(accountId)); // if (Objects.isNull(account)) { -// return Result.fail(CodeEnum.ACCOUNTEIXST); +// return Result.fail(ACCOUNTEIXST); // } // if (Objects.isNull(account.getPwd()) || ObjectUtil.isEmpty(account.getPwd())) { // return Result.fail(CodeEnum.PWDNOSET); @@ -1457,7 +1837,7 @@ public class PayService { // redisUtil.del("SHOP:CODE:USER:" + "pc" + ":" + orderInfo.getShopId() + ":" + DateUtils.getDay() + TokenUtil.parseParamFromToken(token).getString("accountId")); // // -// return Result.success(CodeEnum.SUCCESS); +// return Result.success(SUCCESS); return null; } @@ -1488,7 +1868,7 @@ public class PayService { jsonObject.put("amount", tbQuickPay.getAmount()); producer.putOrderCollect(jsonObject.toJSONString()); - return Result.success(CodeEnum.SUCCESS, tbQuickPay); + return Result.success(SUCCESS, tbQuickPay); } else { TbShopInfo tbShopInfo = tbShopInfoMapper.selectByPrimaryKey(Integer.valueOf(shopId)); @@ -1515,7 +1895,7 @@ public class PayService { tbQuickPay.setTradeNo(object.getJSONObject("data").get("orderNumber").toString()); tbQuickPayMapper.insert(tbQuickPay); - return Result.success(CodeEnum.SUCCESS, tbQuickPay); + return Result.success(SUCCESS, tbQuickPay); } String status = ObjectUtil.isNotEmpty(object.getJSONObject("data")) ? object.getJSONObject("data").getString("status") : null; @@ -1540,7 +1920,7 @@ public class PayService { jsonObject.put("type", "quick"); jsonObject.put("amount", tbQuickPay.getAmount()); producer.putOrderCollect(jsonObject.toJSONString()); - return Result.success(CodeEnum.SUCCESS, tbQuickPay); + return Result.success(SUCCESS, tbQuickPay); } if ("TRADE_AWAIT".equals(mainScanResp.getState())) { @@ -1610,7 +1990,7 @@ public class PayService { } } - return Result.success(CodeEnum.SUCCESS, tbQuickPay); + return Result.success(SUCCESS, tbQuickPay); } public Result queryQuickPay(String token, int pageNo, int pageSize) { @@ -1624,7 +2004,7 @@ public class PayService { List list = tbQuickPayMapper.selectByShopIdAndStaffId(Integer.valueOf(shopId), Integer.valueOf(staffId)); PageInfo pageInfo = new PageInfo(list); - return Result.success(CodeEnum.SUCCESS, pageInfo); + return Result.success(SUCCESS, pageInfo); } @@ -1710,7 +2090,7 @@ public class PayService { groupOrderInfo.setStatus("refund"); } tbGroupOrderInfoMapper.update(groupOrderInfo); - return Result.success(CodeEnum.SUCCESS); + return Result.success(SUCCESS); } public Result getOrderDiscount(String staffId, String orderId, String token) { @@ -1869,7 +2249,7 @@ public class PayService { ObjectMapper mapper = new ObjectMapper(); - return Result.success(CodeEnum.SUCCESS, mapper.readTree(scanpayResp.getPayInfo())); + return Result.success(SUCCESS, mapper.readTree(scanpayResp.getPayInfo())); } else if ("TRADE_AWAIT".equals(scanpayResp.getState())) { payment.setTradeNumber(scanpayResp.getPayOrderId()); @@ -2028,7 +2408,7 @@ public class PayService { ObjectMapper mapper = new ObjectMapper(); - return Result.success(CodeEnum.SUCCESS, mapper.readTree(scanpayResp.getPayInfo())); + return Result.success(SUCCESS, mapper.readTree(scanpayResp.getPayInfo())); } else if ("TRADE_AWAIT".equals(scanpayResp.getState())) { payment.setTradeNumber(scanpayResp.getPayOrderId()); @@ -2099,7 +2479,7 @@ public class PayService { } } - return Result.success(CodeEnum.SUCCESS, orderInfo); + return Result.success(SUCCESS, orderInfo); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/TbMemberPointsService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/TbMemberPointsService.java new file mode 100644 index 0000000..f425e8f --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/TbMemberPointsService.java @@ -0,0 +1,30 @@ +package com.chaozhanggui.system.cashierservice.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.chaozhanggui.system.cashierservice.entity.TbMemberPoints; + +import java.math.BigDecimal; +import java.util.Map; + +/** + * 会员积分 + * + * @author Tankaikai tankaikai@aliyun.com + * @since 2.0 2024-10-25 + */ +public interface TbMemberPointsService extends IService { + + + /** + * 追加积分 + * + * @param memberId 会员id + * @param points 积分 + * @param content 摘要信息(如:兑换积分商品/积分抵扣账单/消费赠送积分/新会员送积分/储值赠送积分) + * @param orderId 订单id,可以为空 + * @throws Exception + */ + boolean addPoints(Long memberId, int points, String content, Long orderId); + + +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/TbShopCouponService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/TbShopCouponService.java new file mode 100644 index 0000000..157803f --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/TbShopCouponService.java @@ -0,0 +1,24 @@ +package com.chaozhanggui.system.cashierservice.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.chaozhanggui.system.cashierservice.entity.TbActivateOutRecord; +import com.chaozhanggui.system.cashierservice.entity.TbShopCoupon; +import org.springframework.http.ResponseEntity; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * 优惠券(TbShopCoupon)表服务接口 + * + * @author ww + * @since 2024-10-22 15:43:25 + */ +public interface TbShopCouponService { + + boolean refund(List param); + +} + diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderDetailServiceImpl.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderDetailServiceImpl.java index 7476e39..2510fd6 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderDetailServiceImpl.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderDetailServiceImpl.java @@ -70,5 +70,17 @@ public class MpOrderDetailServiceImpl extends ServiceImpl orderDetails) { + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper() + .eq(TbOrderDetail::getOrderId, orderId) + .in(TbOrderDetail::getId, orderDetails) + .set(TbOrderDetail::getStatus, orderStatusEnums.getValue()); + if (oldOrderStatusEnums != null) { + wrapper.eq(TbOrderDetail::getStatus, oldOrderStatusEnums.getValue()); + } + return update(wrapper); + } } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderInfoServiceImpl.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderInfoServiceImpl.java index 9db8098..4c6c6c1 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderInfoServiceImpl.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/MpOrderInfoServiceImpl.java @@ -1,16 +1,25 @@ package com.chaozhanggui.system.cashierservice.service.impl; import cn.hutool.Hutool; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.chaozhanggui.system.cashierservice.bean.constant.TableConstant; import com.chaozhanggui.system.cashierservice.entity.TbOrderDetail; import com.chaozhanggui.system.cashierservice.entity.TbOrderInfo; +import com.chaozhanggui.system.cashierservice.entity.TbShopUser; +import com.chaozhanggui.system.cashierservice.entity.TbShopUserFlow; +import com.chaozhanggui.system.cashierservice.exception.MsgException; import com.chaozhanggui.system.cashierservice.mybatis.MPOrderDetailMapper; import com.chaozhanggui.system.cashierservice.mybatis.MPOrderInfoMapper; +import com.chaozhanggui.system.cashierservice.mybatis.MpShopUserFlowMapper; +import com.chaozhanggui.system.cashierservice.mybatis.MpShopUserMapper; import com.chaozhanggui.system.cashierservice.service.MpOrderDetailService; import com.chaozhanggui.system.cashierservice.service.MpOrderInfoService; +import com.chaozhanggui.system.cashierservice.util.RabbitMsgUtils; import org.springframework.stereotype.Service; import java.math.BigDecimal; @@ -25,6 +34,16 @@ import java.util.List; @Service public class MpOrderInfoServiceImpl extends ServiceImpl implements MpOrderInfoService { + private final MpShopUserMapper mpShopUserMapper; + private final MpShopUserFlowMapper mpShopUserFlowMapper; + private final RabbitMsgUtils rabbitMsgUtils; + + public MpOrderInfoServiceImpl(MpShopUserMapper mpShopUserMapper, MpShopUserFlowMapper mpShopUserFlowMapper, RabbitMsgUtils rabbitMsgUtils) { + this.mpShopUserMapper = mpShopUserMapper; + this.mpShopUserFlowMapper = mpShopUserFlowMapper; + this.rabbitMsgUtils = rabbitMsgUtils; + } + @Override public boolean updateStateById(Integer shopId, Integer orderId, TableConstant.Status status) { return update(new LambdaUpdateWrapper() @@ -45,5 +64,37 @@ public class MpOrderInfoServiceImpl extends ServiceImpl() + .eq(TbShopUser::getShopId, shopId) + .eq(TbShopUser::getUserId, userId)); + if (user == null) { + throw new MsgException("用户信息不存在"); + } + mpShopUserMapper.incrBalance(user.getId(), shopId, returnAmount, DateUtil.date().getTime()); + + TbShopUserFlow flow = new TbShopUserFlow(); + flow.setShopUserId(user.getId()); + flow.setBizCode("accountReturnPay"); + flow.setBizName("会员储值卡退款"); + flow.setType("+"); + flow.setAmount(returnAmount); + flow.setBalance(user.getAmount().add(returnAmount)); + flow.setCreateTime(cn.hutool.core.date.DateUtil.date().toTimestamp()); + flow.setIsReturn("0"); + mpShopUserFlowMapper.insert(flow); + + JSONObject baObj = new JSONObject(); + baObj.put("userId", user.getUserId()); + baObj.put("shopId", user.getShopId()); + baObj.put("amount", returnAmount); + baObj.put("balance", user.getAmount()); + baObj.put("type", "退款"); + baObj.put("time", flow.getCreateTime()); + rabbitMsgUtils.addBalanceRecord(baObj); +// producer.balance(baObj.toString()); + } } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/TbMemberPointsServiceImpl.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/TbMemberPointsServiceImpl.java new file mode 100644 index 0000000..55ac14e --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/TbMemberPointsServiceImpl.java @@ -0,0 +1,94 @@ +package com.chaozhanggui.system.cashierservice.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.map.MapProxy; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.chaozhanggui.system.cashierservice.dao.TbOrderInfoMapper; +import com.chaozhanggui.system.cashierservice.entity.TbMemberPoints; +import com.chaozhanggui.system.cashierservice.entity.TbMemberPointsLog; +import com.chaozhanggui.system.cashierservice.entity.TbOrderInfo; +import com.chaozhanggui.system.cashierservice.exception.MsgException; +import com.chaozhanggui.system.cashierservice.mapper.TbMemberPointsLogMapper; +import com.chaozhanggui.system.cashierservice.mapper.TbMemberPointsMapper; +import com.chaozhanggui.system.cashierservice.service.TbMemberPointsService; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.Date; +import java.util.Map; + +/** + * 会员积分 + * + * @author Tankaikai tankaikai@aliyun.com + * @since 2.0 2024-10-25 + */ +@Service +@Primary +public class TbMemberPointsServiceImpl extends ServiceImpl implements TbMemberPointsService { + + @Resource + private TbMemberPointsLogMapper tbMemberPointsLogMapper; + @Resource + private TbOrderInfoMapper tbOrderInfoMapper; + + + + public TbMemberPoints initMemberPoints(Long memberId) { + TbMemberPoints entity = super.getOne(Wrappers.lambdaQuery().eq(TbMemberPoints::getMemberId, memberId)); + if (entity == null) { + throw new MsgException("会员信息不存在"); + } + if (entity.getAccountPoints() == null) { + entity.setAccountPoints(0); + } + super.updateById(entity); + return entity; + } + + + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean addPoints(Long memberId, int points, String content, Long orderId) { + TbMemberPoints entity = initMemberPoints(memberId); + // 增加账户积分 + entity.setAccountPoints(entity.getAccountPoints() + points); + entity.setLastPointsChangeTime(new Date()); + entity.setLastFloatPoints(points); + // 记录积分变动记录 + TbMemberPointsLog log = new TbMemberPointsLog(); + log.setShopId(entity.getShopId()); + log.setMemberId(entity.getMemberId()); + log.setMemberName(entity.getMemberName()); + log.setAvatarUrl(entity.getAvatarUrl()); + log.setMobile(entity.getMobile()); + log.setContent(content); + log.setFloatType("add"); + log.setFloatPoints(points); + log.setCreateTime(new Date()); + // 有关联订单的需要回置订单表的相关积分使用字段 + if (orderId != null) { + TbOrderInfo orderInfo = tbOrderInfoMapper.selectById(Math.toIntExact(orderId)); + if (orderInfo != null) { + log.setOrderNo(orderInfo.getOrderNo()); + } + } + super.updateById(entity); + tbMemberPointsLogMapper.insert(log); + return true; + } + + +} diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/TbShopCouponServiceImpl.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/TbShopCouponServiceImpl.java new file mode 100644 index 0000000..71f97a7 --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/impl/TbShopCouponServiceImpl.java @@ -0,0 +1,53 @@ +package com.chaozhanggui.system.cashierservice.service.impl; + + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.chaozhanggui.system.cashierservice.dao.TbActivateInRecordMapper; +import com.chaozhanggui.system.cashierservice.dao.TbActivateOutRecordMapper; +import com.chaozhanggui.system.cashierservice.dao.TbShopCouponMapper; +import com.chaozhanggui.system.cashierservice.entity.TbActivateInRecord; +import com.chaozhanggui.system.cashierservice.entity.TbActivateOutRecord; +import com.chaozhanggui.system.cashierservice.entity.TbShopCoupon; +import com.chaozhanggui.system.cashierservice.service.TbShopCouponService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Service; + +import java.util.*; + +/** + * 优惠券(TbShopCoupon)表服务实现类 + * + * @author ww + * @since 2024-10-22 15:43:25 + */ +@Service("tbShopCouponService") +@Primary +public class TbShopCouponServiceImpl implements TbShopCouponService { + + @Autowired + private TbActivateInRecordMapper inRecordMapper; + @Autowired + private TbActivateOutRecordMapper outRecordMapper; + + /** + * 退还券 + * + * @param param giveId和 refNum 必传 + * @return + */ + @Override + public boolean refund(List param) { + for (TbActivateOutRecord outRecord : param) { + outRecord.setUpdateTime(new Date()); + outRecordMapper.updateRefNum(outRecord.getId(), outRecord.getRefNum()); + TbActivateInRecord inRecord = inRecordMapper.queryById(outRecord.getGiveId()); + inRecord.setOverNum(inRecord.getOverNum() + outRecord.getRefNum()); + inRecordMapper.updateOverNum(inRecord.getId(), inRecord.getOverNum()); + } + return true; + } + + +} + diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/RabbitMsgUtils.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/RabbitMsgUtils.java index 2d2d72e..e19da2d 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/RabbitMsgUtils.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/RabbitMsgUtils.java @@ -73,4 +73,11 @@ public class RabbitMsgUtils implements RabbitTemplate.ConfirmCallback { } + public void addBalanceRecord(JSONObject baObj) { + sendMsg(RabbitConstants.EXCHANGE_BALANCE, RabbitConstants.ROUTING_KEY_BALANCE, baObj, "储值卡记录", true); + } + + public void updateCons(JSONObject jsonObject1) { + sendMsg(RabbitConstants.EXCHANGE_CONS, RabbitConstants.ROUTING_KEY_CONS, jsonObject1, "储值卡记录", true); + } } From be710b83794284116e857524970140a937583ed9 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, 28 Nov 2024 14:27:15 +0800 Subject: [PATCH 24/77] =?UTF-8?q?fix:=20=E5=A2=9E=E5=8A=A0=E9=9D=A2?= =?UTF-8?q?=E5=8E=A8=E6=89=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/cashierservice/entity/TbCashierCart.java | 2 +- .../system/cashierservice/entity/TbOrderDetail.java | 1 + .../chaozhanggui/system/cashierservice/entity/vo/CartVo.java | 2 +- .../system/cashierservice/service/OrderService.java | 3 ++- 4 files changed, 5 insertions(+), 3 deletions(-) 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 708d764..d6f05c0 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbCashierCart.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbCashierCart.java @@ -83,7 +83,7 @@ public class TbCashierCart implements Serializable { private String unit; private BigDecimal discountSaleAmount; private String discountSaleNote; - private Boolean isPrint; + private Integer isPrint; private String useCouponInfo; private int isThirdCoupon; 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 f109164..13d5e1d 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java @@ -57,6 +57,7 @@ public class TbOrderDetail implements Serializable { private String useCouponInfo; private BigDecimal canReturnAmount; private BigDecimal returnAmount; + private Integer isPrint; } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/CartVo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/CartVo.java index 99b11eb..0d754bc 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/CartVo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/CartVo.java @@ -26,5 +26,5 @@ public class CartVo { private String masterId; private String tableId; private Integer orderId; - private Boolean isPrint; + private Integer isPrint; } 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 06accc0..683ed23 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -216,7 +216,7 @@ public class OrderService { @Transactional(rollbackFor = Exception.class) public Result createCart(String masterId, Integer productId, Integer shopId, Integer skuId, BigDecimal number, - String userId, String clientType, Integer cartId, String isGift, String isPack, String uuid, String type, String tableId, Boolean isPrint) { + String userId, String clientType, Integer cartId, String isGift, String isPack, String uuid, String type, String tableId, Integer isPrint) { if (number == null) { return Result.fail(CodeEnum.PARAM); } @@ -934,6 +934,7 @@ public class OrderService { saleAmount = saleAmount.add(shopInfo.getTableFee()); } + orderDetail.setIsPrint(cashierCart.getIsPrint()); orderDetail.setMemberPrice(cashierCart.getMemberPrice()); orderDetail.setCreateTime(new Date()); orderDetail.setNum(cashierCart.getNumber()); From d5e502478ebe2420119cbeccf2e467805ddb99cf 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, 28 Nov 2024 14:39:40 +0800 Subject: [PATCH 25/77] =?UTF-8?q?fix:=20=E5=A2=9E=E5=8A=A0=E9=9D=A2?= =?UTF-8?q?=E5=8E=A8=E6=89=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/OrderController.java | 5 +++++ .../cashierservice/entity/dto/CartPrintDTO.java | 14 ++++++++++++++ .../cashierservice/service/OrderService.java | 16 ++++++++++++++++ 3 files changed, 35 insertions(+) create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/CartPrintDTO.java diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java b/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java index 25ed4c4..de80582 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java @@ -45,6 +45,11 @@ public class OrderController { cartVo.getIsPack(), cartVo.getUuid(), cartVo.getType(), cartVo.getTableId(), cartVo.getIsPrint()); } + @PutMapping("/print") + public Result print(@RequestBody CartPrintDTO printDTO) { + return orderService.updatePrint(printDTO); + } + @PostMapping("/temporaryDishes") public Result addTemporaryDishes(@Valid @RequestBody AddTemporaryDishesDTO temporaryDishesDTO) { return Result.success(CodeEnum.SUCCESS, orderService.addTemporaryDishes(temporaryDishesDTO)); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/CartPrintDTO.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/CartPrintDTO.java new file mode 100644 index 0000000..3b93f8d --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/CartPrintDTO.java @@ -0,0 +1,14 @@ +package com.chaozhanggui.system.cashierservice.entity.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class CartPrintDTO { + @NotNull + private Integer shopId; + @NotNull + private Integer cartId; + private Integer isPrint; +} 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 683ed23..b0ff0f7 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -2226,4 +2226,20 @@ public class OrderService { return true; } + + public Result updatePrint(CartPrintDTO printDTO) { + if (printDTO.getIsPrint() == null) { + return Result.success(CodeEnum.SUCCESS); + } + mpCashierCartService.update(new LambdaUpdateWrapper() + .eq(TbCashierCart::getShopId, printDTO.getShopId()) + .eq(TbCashierCart::getId, printDTO.getCartId()) + .set(TbCashierCart::getIsPrint, printDTO.getIsPrint())); + + mpOrderDetailService.update(new LambdaUpdateWrapper() + .eq(TbOrderDetail::getCartId, printDTO.getCartId()) + .set(TbOrderDetail::getIsPrint, printDTO.getIsPrint())); + + return Result.success(CodeEnum.SUCCESS); + } } From 569f9c5d163068b7039c1748e6f0cd65d4fde186 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, 28 Nov 2024 15:31:07 +0800 Subject: [PATCH 26/77] =?UTF-8?q?fix:=20=E5=A2=9E=E5=8A=A0=E5=8D=95?= =?UTF-8?q?=E5=93=81=E6=94=B9=E4=BB=B7=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/OrderController.java | 2 ++ .../cashierservice/entity/TbOrderDetail.java | 4 ++++ .../entity/dto/WaitCallDTO.java | 19 +++++++++++++++++++ .../cashierservice/service/OrderService.java | 2 ++ 4 files changed, 27 insertions(+) create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/WaitCallDTO.java diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java b/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java index de80582..0085da8 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java @@ -68,6 +68,8 @@ public class OrderController { return Result.success(CodeEnum.SUCCESS, orderService.updatePrice(updatePriceDTO)); } + + @GetMapping("/queryCart") public Result queryCart(@RequestHeader("token") String token, @RequestHeader("loginName") String loginName, 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 13d5e1d..e712681 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java @@ -59,5 +59,9 @@ public class TbOrderDetail implements Serializable { private BigDecimal returnAmount; private Integer isPrint; + private BigDecimal discountSaleAmount; + private String discountSaleNote; + + } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/WaitCallDTO.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/WaitCallDTO.java new file mode 100644 index 0000000..89703ed --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/dto/WaitCallDTO.java @@ -0,0 +1,19 @@ +package com.chaozhanggui.system.cashierservice.entity.dto; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +@Data +public class WaitCallDTO { + @NotNull + private Integer shopId; + @NotNull + private Integer isWaitCall; + private Integer orderId; + private String code; + @NotBlank + private String useType; + private String tableId; +} 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 b0ff0f7..88c0067 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -934,6 +934,8 @@ public class OrderService { saleAmount = saleAmount.add(shopInfo.getTableFee()); } + orderDetail.setDiscountSaleNote(cashierCart.getDiscountSaleNote()); + orderDetail.setDiscountSaleAmount(cashierCart.getDiscountSaleAmount()); orderDetail.setIsPrint(cashierCart.getIsPrint()); orderDetail.setMemberPrice(cashierCart.getMemberPrice()); orderDetail.setCreateTime(new Date()); From f1c80e6f1e3b83338c6e10f20f47968bbeb140d5 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, 28 Nov 2024 16:41:15 +0800 Subject: [PATCH 27/77] =?UTF-8?q?fix:=20=E5=A2=9E=E5=8A=A0=E5=8D=95?= =?UTF-8?q?=E5=93=81=E6=94=B9=E4=BB=B7=E4=BF=A1=E6=81=AF?= 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 88c0067..de43a2a 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -934,6 +934,7 @@ public class OrderService { saleAmount = saleAmount.add(shopInfo.getTableFee()); } + orderDetail.setIsTemporary(cashierCart.getIsTemporary()); orderDetail.setDiscountSaleNote(cashierCart.getDiscountSaleNote()); orderDetail.setDiscountSaleAmount(cashierCart.getDiscountSaleAmount()); orderDetail.setIsPrint(cashierCart.getIsPrint()); From a6de9593a733c0207cfcf00db8042a9823b436e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Thu, 28 Nov 2024 17:00:17 +0800 Subject: [PATCH 28/77] =?UTF-8?q?=E5=B0=8F=E7=A5=A8=E6=89=93=E5=8D=B0bug?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashierservice/util/FeieyunPrintUtil.java | 27 ++++--- .../cashierservice/util/PrinterUtils.java | 71 ++++++++++++------- 2 files changed, 62 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java index 9aa3d32..eca7ea2 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java @@ -230,7 +230,7 @@ public class FeieyunPrintUtil { for (OrderDetailPO.Detail detail : detailPO.getDetailList()) { String productName = detail.getProductName(); String number = detail.getNumber(); - String amount = detail.getAmount(); + String amount = toPlainStr(detail.getAmount()); //58mm的机器,一行打印16个汉字,32个字母; 80mm的机器,一行打印24个汉字,48个字母 //展示4列 b1代表名称列占用(14个字节) b2单价列(6个字节) b3数量列(3个字节) b4金额列(6个字节)-->这里的字节数可按自己需求自由改写,14+6+3+6再加上代码写的3个空格就是32了,58mm打印机一行总占32字节 //String row = FeieYunUtil.getRow(productName, "",number, amount, 14, 6,3, 6) @@ -245,22 +245,22 @@ public class FeieyunPrintUtil { log.error("打印数据>>>>>>>>>>>>>>>>>>>>>:{}{}", detailPO.getDiscountAmount(), detailPO.getDiscountAdio()); if (ObjectUtil.isNotNull(detailPO.getDiscountAmount()) && ObjectUtil.isNotNull(detailPO.getDiscountAdio())) { data.append("--------------------------------
"); - data.append(StrUtil.format("原价:{}
", detailPO.getReceiptsAmount())); - data.append(StrUtil.format("折扣:-{}
", NumberUtil.null2Zero(new BigDecimal(detailPO.getDiscountAmount())).toPlainString())); + data.append(StrUtil.format("原价:{}
", toPlainStr(detailPO.getReceiptsAmount()))); + data.append(StrUtil.format("折扣:-{}
", toPlainStr(detailPO.getDiscountAmount()))); } data.append("--------------------------------
"); - String t = "¥" + (ObjectUtil.isEmpty(detailPO.getDiscountAmount()) || ObjectUtil.isNull(detailPO.getDiscountAmount()) ? detailPO.getReceiptsAmount() : new BigDecimal(detailPO.getReceiptsAmount()).subtract(new BigDecimal(detailPO.getDiscountAmount())).toPlainString()); + String t = "¥" + (ObjectUtil.isEmpty(detailPO.getDiscountAmount()) || ObjectUtil.isNull(detailPO.getDiscountAmount()) ? toPlainStr(detailPO.getReceiptsAmount()) : NumberUtil.sub(new BigDecimal(detailPO.getReceiptsAmount()),new BigDecimal(detailPO.getDiscountAmount())).toPlainString()); if (orderType.equals("return")) { data.append(StrUtil.format("应退:{}
", t)); } else { data.append(StrUtil.format("应收:{}
", t)); } if (ObjectUtil.isNotEmpty(detailPO.getPayType()) && ObjectUtil.isNotNull(detailPO.getPayType()) && detailPO.getPayType().equals("deposit")) { - data.append(StrUtil.format("储值:{}
", detailPO.getReceiptsAmount())); + data.append(StrUtil.format("储值:{}
", toPlainStr(detailPO.getReceiptsAmount()))); data.append("--------------------------------
"); data.append(StrUtil.format("积分:{}
", detailPO.getIntegral())); } - data.append(StrUtil.format("余额:{}
", detailPO.getBalance())); + data.append(StrUtil.format("余额:{}
", toPlainStr(detailPO.getBalance()))); data.append("--------------------------------
"); if (ObjectUtil.isNotEmpty(detailPO.getRemark()) && ObjectUtil.isNotNull(detailPO.getRemark())) { data.append(StrUtil.format("备注:{}
", detailPO.getRemark())); @@ -270,6 +270,13 @@ public class FeieyunPrintUtil { return data.toString(); } + private static String toPlainStr(String str) { + if(StrUtil.isBlank(str)){ + return "0"; + } + return new BigDecimal(str).toPlainString(); + } + public static String[] getCashPrintData(OrderDetailPO detailPO, String sn, String type, String orderType, String printerNum) { String content = buildPrintContent(detailPO, type, orderType); @@ -488,7 +495,10 @@ public class FeieyunPrintUtil { public static void main(String[] args) { //testPrint(); //testPrint2(); - testPrint3(); + String a = "12.0000"; + String s = new BigDecimal(a).toPlainString(); + System.out.println(s); + //testPrint3(); } public static void testPrint() { @@ -551,7 +561,4 @@ public class FeieyunPrintUtil { System.out.println(UnicodeUtil.toString(resp)); } - - - } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java index 731ac72..0296754 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java @@ -1,5 +1,6 @@ package com.chaozhanggui.system.cashierservice.util; +import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpUtil; @@ -13,7 +14,6 @@ import org.slf4j.LoggerFactory; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; -import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; @@ -130,19 +130,19 @@ public class PrinterUtils { int count = getProducrName(detail.getProductName()); if (count <= 0) { int length = 15 - (detail.getProductName().length() - 4); - sb.append("").append(String.format("%-" + length + "s", detail.getProductName()).replace(' ', paddingCharacter)).append(String.format("%-4s", detail.getNumber()).replace(' ', paddingCharacter)).append(String.format("%8s", detail.getAmount()).replace(' ', paddingCharacter)).append("
"); + sb.append("").append(String.format("%-" + length + "s", detail.getProductName()).replace(' ', paddingCharacter)).append(String.format("%-4s", detail.getNumber()).replace(' ', paddingCharacter)).append(String.format("%8s", toPlainStr(detail.getAmount())).replace(' ', paddingCharacter)).append("
"); } else { int length = 15 + count - (detail.getProductName().length() - 4); - sb.append("").append(String.format("%-" + length + "s", detail.getProductName()).replace(' ', paddingCharacter)).append(String.format("%-4s", detail.getNumber()).replace(' ', paddingCharacter)).append(String.format("%8s", detail.getAmount()).replace(' ', paddingCharacter)).append("
"); + sb.append("").append(String.format("%-" + length + "s", detail.getProductName()).replace(' ', paddingCharacter)).append(String.format("%-4s", detail.getNumber()).replace(' ', paddingCharacter)).append(String.format("%8s", toPlainStr(detail.getAmount())).replace(' ', paddingCharacter)).append("
"); } } else if (detail.getProductName().length() > 10) { sb.append("").append(detail.getProductName()).append("
"); - sb.append("").append(String.format("%20s", detail.getNumber()).replace(' ', paddingCharacter)).append(String.format("%11s", detail.getAmount()).replace(' ', paddingCharacter)).append("
"); + sb.append("").append(String.format("%20s", detail.getNumber()).replace(' ', paddingCharacter)).append(String.format("%11s", toPlainStr(detail.getAmount())).replace(' ', paddingCharacter)).append("
"); } else { - sb.append("").append(String.format("%-15s", detail.getProductName()).replace(' ', paddingCharacter)).append(String.format("%-4s", detail.getNumber()).replace(' ', paddingCharacter)).append(String.format("%8s", detail.getAmount()).replace(' ', paddingCharacter)).append("
"); + sb.append("").append(String.format("%-15s", detail.getProductName()).replace(' ', paddingCharacter)).append(String.format("%-4s", detail.getNumber()).replace(' ', paddingCharacter)).append(String.format("%8s", toPlainStr(detail.getAmount())).replace(' ', paddingCharacter)).append("
"); } if (detail.getSpec() != null && ObjectUtil.isNotEmpty(detail.getSpec())) { @@ -153,13 +153,13 @@ public class PrinterUtils { if (ObjectUtil.isNotNull(detailPO.getDiscountAmount()) && ObjectUtil.isNotNull(detailPO.getDiscountAdio())) { sb.append("------------------------
"); - sb.append("原价:".concat(String.format("%15s", detailPO.getReceiptsAmount()).replace(' ', paddingCharacter)).concat("
")); - sb.append("折扣: ".concat(String.format("%15s", "-".concat(new BigDecimal(detailPO.getDiscountAmount()).toPlainString())).replace(' ', paddingCharacter)).concat("
")); + sb.append("原价:".concat(String.format("%15s", toPlainStr(detailPO.getReceiptsAmount())).replace(' ', paddingCharacter)).concat("
")); + sb.append("折扣: ".concat(String.format("%15s", "-".concat(toPlainStr(detailPO.getDiscountAmount()))).replace(' ', paddingCharacter)).concat("
")); } sb.append("------------------------
"); - String t = "¥" + (ObjectUtil.isEmpty(detailPO.getDiscountAmount()) || ObjectUtil.isNull(detailPO.getDiscountAmount()) ? detailPO.getReceiptsAmount() : new BigDecimal(detailPO.getReceiptsAmount()).subtract(new BigDecimal(detailPO.getDiscountAmount())).toPlainString()); + String t = "¥" + (ObjectUtil.isEmpty(detailPO.getDiscountAmount()) || ObjectUtil.isNull(detailPO.getDiscountAmount()) ? toPlainStr(detailPO.getReceiptsAmount()) : NumberUtil.sub(new BigDecimal(detailPO.getReceiptsAmount()), new BigDecimal(detailPO.getDiscountAmount())).toPlainString()); t = String.format("%11s", t).replace(' ', paddingCharacter); if (orderType.equals("return")) { sb.append("应退" + t + "
"); @@ -168,12 +168,12 @@ public class PrinterUtils { } if (ObjectUtil.isNotEmpty(detailPO.getPayType()) && ObjectUtil.isNotNull(detailPO.getPayType()) && detailPO.getPayType().equals("deposit")) { - sb.append("储值¥" + detailPO.getReceiptsAmount() + "
"); + sb.append("储值¥" + toPlainStr(detailPO.getReceiptsAmount()) + "
"); sb.append("------------------------
"); sb.append("积分:" + detailPO.getIntegral() + "
"); } - sb.append("余额:" + detailPO.getBalance() + "
"); + sb.append("余额:" + toPlainStr(detailPO.getBalance()) + "
"); sb.append("------------------------
"); if (ObjectUtil.isNotEmpty(detailPO.getRemark()) && ObjectUtil.isNotNull(detailPO.getRemark())) { @@ -194,6 +194,13 @@ public class PrinterUtils { } + private static String toPlainStr(String str) { + if (StrUtil.isBlank(str)) { + return "0"; + } + return new BigDecimal(str).toPlainString(); + } + public static String getCallNumPrintData(CallNumPrintPO po) { StringBuilder sb = new StringBuilder(); @@ -367,26 +374,34 @@ public class PrinterUtils { Map param = getToken(time, uuid); //参数 - MultiValueMap multiValueMap = new LinkedMultiValueMap<>(); - multiValueMap.add("token", param.get("TOKEN")); - multiValueMap.add("devName", devName); - multiValueMap.add("actWay", actWay); - multiValueMap.add("cn", cn); - multiValueMap.add("data", data); - multiValueMap.add("voiceJson", voiceJson); - multiValueMap.add("appId", APP_ID); - multiValueMap.add("timestamp", time); - multiValueMap.add("requestId", uuid); - multiValueMap.add("userCode", USER_CODE); + //MultiValueMap multiValueMap = new LinkedMultiValueMap<>(); + Map map = new HashMap<>(); + map.put("token", param.get("TOKEN")); + map.put("devName", devName); + map.put("money", null); + map.put("content", "收款100元"); + map.put("broadCastType", "1"); + //multiValueMap.put("actWay", actWay); + //multiValueMap.put("cn", cn); + //multiValueMap.put("data", data); + //multiValueMap.put("voiceJson", voiceJson); + map.put("appId", APP_ID); + map.put("timestamp", time); + map.put("requestId", uuid); + map.put("userCode", USER_CODE); + map.put("bizType", "2"); RestTemplate restTemplate = new RestTemplate(); HttpHeaders header = new HttpHeaders(); header.setContentType(MediaType.APPLICATION_FORM_URLENCODED); - HttpEntity> httpEntity = new HttpEntity<>(multiValueMap, header); + String s = HttpUtil.get("https://ioe.car900.com/v1/openApi/dev/controlDevice.json", map, 50000); + System.out.println(s); + + HttpEntity> httpEntity = null; String httpResponse; try { - httpResponse = restTemplate.postForObject(URL_STR, - httpEntity, String.class); + httpResponse = restTemplate.getForObject("https://ioe.car900.com/v1/openApi/dev/registerCloud.json", + String.class); System.out.println("map" + httpResponse); return httpResponse; } catch (Exception e) { @@ -418,7 +433,7 @@ public class PrinterUtils { * 检查打印状态 * * @param devName 设备名称,(唯一) 对应配置表中的address字段即(IP地址/打印机编号) - * @param taskId 打印任务id,用于复查打印状态,云想印=orderId + * @param taskId 打印任务id,用于复查打印状态,云想印=orderId * @return */ public static String checkPrintStatus(String devName, String taskId) { @@ -465,7 +480,11 @@ public class PrinterUtils { } public static void main(String[] args) throws Exception { - + String str = "{\"bizType\":\"2\",\"broadCastType\":\"1\",\"money\":\"10000000\"}"; + printTickets(str, 2, 1, "BSJQG01YJ0001", null); + if (1 == 1) { + return; + } // List payInfos = new ArrayList<>(); From b75bb50f63bb48c7782093a28baa850c31ff37d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Thu, 28 Nov 2024 17:33:21 +0800 Subject: [PATCH 29/77] =?UTF-8?q?=E5=B0=8F=E7=A5=A8=E6=89=93=E5=8D=B0bug?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rabbit/PrintMechineConsumer.java | 13 ++++++------- .../rabbit/print/PrinterHandler.java | 14 +++++++------- .../service/CloudPrinterService.java | 4 ++-- .../cashierservice/util/FeieyunPrintUtil.java | 4 +++- .../system/cashierservice/util/PrinterUtils.java | 4 ++-- 5 files changed, 20 insertions(+), 19 deletions(-) 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 ec321b7..6c90c0f 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java @@ -180,7 +180,7 @@ public class PrintMechineConsumer { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), NumberUtil.mul(it.getNum(),it.getPrice()).toPlainString(), remark); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), NumberUtil.mul(it.getNum(), it.getPrice()).toPlainString(), remark); detailList.add(detail); }); @@ -228,7 +228,7 @@ public class PrintMechineConsumer { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), NumberUtil.mul(it.getNum(),it.getPrice()).toPlainString(), remark); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), NumberUtil.mul(it.getNum(), it.getPrice()).toPlainString(), remark); detailList.add(detail); } }); @@ -285,7 +285,7 @@ public class PrintMechineConsumer { // 重置打印数据 redisTemplate.delete(printKey); if (!tbOrderDetails.isEmpty()) { - tbOrderDetails.forEach(it -> { + tbOrderDetails.parallelStream().filter(o -> ObjectUtil.defaultIfNull(o.getIsPrint(), 0) == 1).forEach(it->{ log.info("开始打印一菜一品票据,:{}", it.getProductName()); String categoryId = tbProductMapper.selectByPrimaryKey(it.getProductId()).getCategoryId(); @@ -494,7 +494,7 @@ public class PrintMechineConsumer { private void printReturnTicket(TbPrintMachineWithBLOBs tbPrintMachineWithBLOBs, TbOrderInfo orderInfo, String printerNum, List categoryInfos, String orderId) { List details = tbOrderDetailMapper.selectAllByOrderId(Integer.valueOf(orderId)); if (ObjectUtil.isNotEmpty(details) && details.size() > 0) { - details.parallelStream().forEach(it -> { + details.parallelStream().filter(o -> ObjectUtil.defaultIfNull(o.getIsPrint(), 0) == 1).forEach(it -> { String categoryId = tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId(); Long count = categoryInfos.stream().filter(c -> c.getId().toString().equals(categoryId) @@ -556,7 +556,7 @@ public class PrintMechineConsumer { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), NumberUtil.mul(it.getNum(),it.getPrice()).toPlainString(), remark); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), NumberUtil.mul(it.getNum(), it.getPrice()).toPlainString(), remark); detailList.add(detail); }); @@ -657,8 +657,7 @@ public class PrintMechineConsumer { List cashierCarts = tbCashierCartMapper.selectByOrderId(orderId, "final"); if (ObjectUtil.isNotEmpty(cashierCarts) && cashierCarts.size() > 0) { - cashierCarts.parallelStream().forEach(it -> { - + cashierCarts.parallelStream().filter(o -> ObjectUtil.defaultIfNull(o.getIsPrint(), 0) == 1).forEach(it -> { String categoryId; if (ObjectUtil.isEmpty(it.getCategoryId())) { categoryId = tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId(); 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 62cad14..d303334 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 @@ -83,7 +83,7 @@ public abstract class PrinterHandler { * 仅打印制作单「厨房」 */ private void onlyKitchen(TbPrintMachine machine, TbOrderInfo orderInfo, List tbOrderDetailList, List categoryInfos, boolean isReturn) { - tbOrderDetailList.forEach(item -> { + tbOrderDetailList.parallelStream().filter(o -> ObjectUtil.defaultIfNull(o.getIsPrint(), 0) == 1).forEach(item -> { log.info("开始打印退单菜品,商品名:{}", item.getProductName()); Integer isTemporary = ObjectUtil.defaultIfNull(item.getIsTemporary(), 0); String categoryId = "0"; @@ -97,7 +97,7 @@ public abstract class PrinterHandler { } TbProduct product = tbProductMapper.selectByPrimaryKey(item.getProductId()); - if(isTemporary == 0) { + if (isTemporary == 0) { categoryId = product.getCategoryId(); } TbProductSkuWithBLOBs sku = tbProductSkuMapper.selectByPrimaryKey(item.getProductSkuId()); @@ -113,7 +113,7 @@ public abstract class PrinterHandler { long count = categoryInfos.stream().filter(c -> c.getId().toString().equals(finalCategoryId) ).count(); - if(isTemporary == 0) { + if (isTemporary == 0) { count = 1; } if (machine.getClassifyPrint() != null && "1".equals(machine.getClassifyPrint()) && count == 0) { @@ -143,16 +143,16 @@ public abstract class PrinterHandler { tbOrderDetailList.forEach(it -> { Integer isTemporary = ObjectUtil.defaultIfNull(it.getIsTemporary(), 0); String remark = ""; - if(isTemporary == 0){ + if (isTemporary == 0) { TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(it.getProductSkuId()); if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } } - if(isTemporary == 1) { - it.setProductName("【临时菜】"+it.getProductName()); + if (isTemporary == 1) { + it.setProductName("【临时菜】" + it.getProductName()); } - OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), NumberUtil.mul(it.getNum(),it.getPrice()).toPlainString(), remark); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), NumberUtil.mul(it.getNum(), it.getPrice()).toPlainString(), remark); detailList.add(detail); }); 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 5b3bfa2..79a1262 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java @@ -175,7 +175,7 @@ public class CloudPrinterService { if ("return".equals(orderInfo.getOrderType())) { List details = tbOrderDetailMapper.selectAllByOrderId(Integer.valueOf(orderId)); if (ObjectUtil.isNotEmpty(details) && details.size() > 0) { - details.parallelStream().forEach(it -> { + details.parallelStream().filter(o -> ObjectUtil.defaultIfNull(o.getIsPrint(), 0) == 1).forEach(it -> { String categoryId = tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId(); @@ -509,7 +509,7 @@ public class CloudPrinterService { List cashierCarts = tbCashierCartMapper.selectByOrderId(orderId, "final"); if (ObjectUtil.isNotEmpty(cashierCarts) && cashierCarts.size() > 0) { - cashierCarts.parallelStream().forEach(it -> { + cashierCarts.parallelStream().filter(o -> ObjectUtil.defaultIfNull(o.getIsPrint(), 0) == 1).forEach(it -> { String categoryId; if (ObjectUtil.isEmpty(it.getCategoryId())) { diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java index eca7ea2..9b1d673 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java @@ -274,7 +274,7 @@ public class FeieyunPrintUtil { if(StrUtil.isBlank(str)){ return "0"; } - return new BigDecimal(str).toPlainString(); + return NumberUtil.roundDown(new BigDecimal(str), 2).toPlainString(); } public static String[] getCashPrintData(OrderDetailPO detailPO, String sn, String type, String orderType, String printerNum) { @@ -498,6 +498,8 @@ public class FeieyunPrintUtil { String a = "12.0000"; String s = new BigDecimal(a).toPlainString(); System.out.println(s); + String s1 = toPlainStr(a); + System.out.println(s1); //testPrint3(); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java index 0296754..9f11ed1 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java @@ -195,10 +195,10 @@ public class PrinterUtils { } private static String toPlainStr(String str) { - if (StrUtil.isBlank(str)) { + if(StrUtil.isBlank(str)){ return "0"; } - return new BigDecimal(str).toPlainString(); + return NumberUtil.roundDown(new BigDecimal(str), 2).toPlainString(); } public static String getCallNumPrintData(CallNumPrintPO po) { From 059d8718ddb33749291b25b366b8ab22e50e17f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Thu, 28 Nov 2024 17:45:35 +0800 Subject: [PATCH 30/77] =?UTF-8?q?=E5=B0=8F=E7=A5=A8=E6=89=93=E5=8D=B0bug?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/cashierservice/rabbit/print/PrinterHandler.java | 3 +++ .../system/cashierservice/util/FeieyunPrintUtil.java | 7 ++++--- 2 files changed, 7 insertions(+), 3 deletions(-) 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 d303334..fe09f6d 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 @@ -89,6 +89,7 @@ public abstract class PrinterHandler { String categoryId = "0"; if (isTemporary == 1) { item.setProductId(0); + item.setProductSkuId(0); } // 台位费不打印 if (item.getProductId().equals(-999)) { @@ -104,6 +105,8 @@ public abstract class PrinterHandler { if (isTemporary == 0 && sku == null) { log.error("商品不存在, id: {}", item.getProductSkuId()); return; + } else { + sku = new TbProductSkuWithBLOBs(); } if (StrUtil.isEmpty(machine.getClassifyPrint())) { log.error("分类打印是空, classifyPrint: {}", machine.getClassifyPrint()); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java index 9b1d673..83287f6 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java @@ -27,6 +27,7 @@ import org.apache.http.util.EntityUtils; import java.io.IOException; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; @Slf4j @@ -249,7 +250,7 @@ public class FeieyunPrintUtil { data.append(StrUtil.format("折扣:-{}
", toPlainStr(detailPO.getDiscountAmount()))); } data.append("--------------------------------
"); - String t = "¥" + (ObjectUtil.isEmpty(detailPO.getDiscountAmount()) || ObjectUtil.isNull(detailPO.getDiscountAmount()) ? toPlainStr(detailPO.getReceiptsAmount()) : NumberUtil.sub(new BigDecimal(detailPO.getReceiptsAmount()),new BigDecimal(detailPO.getDiscountAmount())).toPlainString()); + String t = "¥" + (ObjectUtil.isEmpty(detailPO.getDiscountAmount()) || ObjectUtil.isNull(detailPO.getDiscountAmount()) ? toPlainStr(detailPO.getReceiptsAmount()) : NumberUtil.sub(new BigDecimal(detailPO.getReceiptsAmount()), new BigDecimal(detailPO.getDiscountAmount())).setScale(2, RoundingMode.DOWN).toPlainString()); if (orderType.equals("return")) { data.append(StrUtil.format("应退:{}
", t)); } else { @@ -271,7 +272,7 @@ public class FeieyunPrintUtil { } private static String toPlainStr(String str) { - if(StrUtil.isBlank(str)){ + if (StrUtil.isBlank(str)) { return "0"; } return NumberUtil.roundDown(new BigDecimal(str), 2).toPlainString(); @@ -496,7 +497,7 @@ public class FeieyunPrintUtil { //testPrint(); //testPrint2(); String a = "12.0000"; - String s = new BigDecimal(a).toPlainString(); + String s = new BigDecimal(a).setScale(2, RoundingMode.DOWN).toPlainString(); System.out.println(s); String s1 = toPlainStr(a); System.out.println(s1); From 8394585422205b894a2ea2dad7a10c3eef8933c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Thu, 28 Nov 2024 17:58:16 +0800 Subject: [PATCH 31/77] =?UTF-8?q?=E5=B0=8F=E7=A5=A8=E6=89=93=E5=8D=B0bug?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/cashierservice/rabbit/print/FeiPrinter.java | 5 ++--- .../system/cashierservice/rabbit/print/PrinterHandler.java | 4 ++-- .../system/cashierservice/util/PrinterUtils.java | 5 +++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/FeiPrinter.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/FeiPrinter.java index 6845d98..506c928 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/FeiPrinter.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/FeiPrinter.java @@ -64,13 +64,12 @@ public class FeiPrinter extends PrinterHandler { @Override protected void normalDishesPrint(TbOrderInfo orderInfo, TbOrderDetail orderDetail, TbPrintMachine machine) { TbProductSkuWithBLOBs sku = tbProductSkuMapper.selectByPrimaryKey(orderDetail.getProductSkuId()); - if (sku == null) { + if (sku == null && orderDetail.getIsTemporary() == 0) { log.warn("打印菜品票失败 sku商品不存在: {}", orderDetail); return; } - String remark = sku.getSpecSnap(); + String remark = sku == null ? "" : sku.getSpecSnap(); // todo 修改为bigdecimal - String[] resp = FeieyunPrintUtil.getPrintData(machine.getAddress(), orderInfo, DateUtils.getTime(new Date(orderInfo.getCreatedAt())), orderDetail.getProductName(), orderDetail.getNum().intValue(), remark); shopPrintLogService.save(machine, "新订单", resp[0], resp[1]); 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 fe09f6d..fb87580 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 @@ -116,7 +116,7 @@ public abstract class PrinterHandler { long count = categoryInfos.stream().filter(c -> c.getId().toString().equals(finalCategoryId) ).count(); - if (isTemporary == 0) { + if (isTemporary == 1) { count = 1; } if (machine.getClassifyPrint() != null && "1".equals(machine.getClassifyPrint()) && count == 0) { @@ -153,7 +153,7 @@ public abstract class PrinterHandler { } } if (isTemporary == 1) { - it.setProductName("【临时菜】" + it.getProductName()); + it.setProductName("【临】" + it.getProductName()); } OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), NumberUtil.mul(it.getNum(), it.getPrice()).toPlainString(), remark); detailList.add(detail); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java index 9f11ed1..b9398a6 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java @@ -18,6 +18,7 @@ import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; /** @@ -159,7 +160,7 @@ public class PrinterUtils { sb.append("------------------------
"); - String t = "¥" + (ObjectUtil.isEmpty(detailPO.getDiscountAmount()) || ObjectUtil.isNull(detailPO.getDiscountAmount()) ? toPlainStr(detailPO.getReceiptsAmount()) : NumberUtil.sub(new BigDecimal(detailPO.getReceiptsAmount()), new BigDecimal(detailPO.getDiscountAmount())).toPlainString()); + String t = "¥" + (ObjectUtil.isEmpty(detailPO.getDiscountAmount()) || ObjectUtil.isNull(detailPO.getDiscountAmount()) ? toPlainStr(detailPO.getReceiptsAmount()) : NumberUtil.sub(new BigDecimal(detailPO.getReceiptsAmount()), new BigDecimal(detailPO.getDiscountAmount())).setScale(2, RoundingMode.DOWN).toPlainString()); t = String.format("%11s", t).replace(' ', paddingCharacter); if (orderType.equals("return")) { sb.append("应退" + t + "
"); @@ -195,7 +196,7 @@ public class PrinterUtils { } private static String toPlainStr(String str) { - if(StrUtil.isBlank(str)){ + if (StrUtil.isBlank(str)) { return "0"; } return NumberUtil.roundDown(new BigDecimal(str), 2).toPlainString(); From fa09fd29972a0fed1c45f64e1699e8fe28c115cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Thu, 28 Nov 2024 18:23:03 +0800 Subject: [PATCH 32/77] =?UTF-8?q?=E5=B0=8F=E7=A5=A8=E6=89=93=E5=8D=B0bug?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rabbit/PrintMechineConsumer.java | 51 +++++++++++++------ .../rabbit/print/PrinterHandler.java | 1 + .../service/CloudPrinterService.java | 24 ++++++--- 3 files changed, 52 insertions(+), 24 deletions(-) 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 6c90c0f..033da91 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java @@ -285,14 +285,21 @@ public class PrintMechineConsumer { // 重置打印数据 redisTemplate.delete(printKey); if (!tbOrderDetails.isEmpty()) { - tbOrderDetails.parallelStream().filter(o -> ObjectUtil.defaultIfNull(o.getIsPrint(), 0) == 1).forEach(it->{ + tbOrderDetails.parallelStream().filter(o -> ObjectUtil.defaultIfNull(o.getIsPrint(), 0) == 1).forEach(it -> { log.info("开始打印一菜一品票据,:{}", it.getProductName()); - String categoryId = tbProductMapper.selectByPrimaryKey(it.getProductId()).getCategoryId(); - - long count = categoryInfos.stream().filter(c -> - c.getId().toString().equals(categoryId) - ).count(); + long count; + if (it.getIsTemporary() == 1) { + it.setProductId(0); + it.setProductSkuId(0); + it.setProductName("【临】" + it.getProductName()); + count = 1; + } else { + String categoryId = tbProductMapper.selectByPrimaryKey(it.getProductId()).getCategoryId(); + count = categoryInfos.stream().filter(c -> + c.getId().toString().equals(categoryId) + ).count(); + } log.info("获取当前类别是否未打印类别:{}", count); if (count > 0) { // 统计已打数量 @@ -320,10 +327,12 @@ public class PrintMechineConsumer { log.info("已打印数量, {}, 未打印数量: {}", info, printerNum); - TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(it.getProductSkuId()); String remark = ""; - if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { - remark = tbProductSkuWithBLOBs.getSpecSnap(); + if(it.getIsTemporary() == 0) { + TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(it.getProductSkuId()); + if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { + remark = tbProductSkuWithBLOBs.getSpecSnap(); + } } // 将已打印信息加入redis @@ -495,16 +504,26 @@ public class PrintMechineConsumer { List details = tbOrderDetailMapper.selectAllByOrderId(Integer.valueOf(orderId)); if (ObjectUtil.isNotEmpty(details) && details.size() > 0) { details.parallelStream().filter(o -> ObjectUtil.defaultIfNull(o.getIsPrint(), 0) == 1).forEach(it -> { - String categoryId = tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId(); - Long count = categoryInfos.stream().filter(c -> - c.getId().toString().equals(categoryId) - ).count(); + long count = 0; + if (it.getIsTemporary() == 1) { + it.setProductId(0); + it.setProductSkuId(0); + it.setProductName("【临】" + it.getProductName()); + }else{ + String categoryId = tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId(); + count = categoryInfos.stream().filter(c -> + c.getId().toString().equals(categoryId) + ).count(); + } + if (count > 0) { - TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getProductSkuId())); String remark = ""; - if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { - remark = tbProductSkuWithBLOBs.getSpecSnap(); + if (it.getIsTemporary() == 0) { + TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getProductSkuId())); + if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { + remark = tbProductSkuWithBLOBs.getSpecSnap(); + } } // todo 修改为bigdecimal 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 fb87580..90c7a96 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 @@ -90,6 +90,7 @@ public abstract class PrinterHandler { if (isTemporary == 1) { item.setProductId(0); item.setProductSkuId(0); + item.setProductName("【临】" + item.getProductName()); } // 台位费不打印 if (item.getProductId().equals(-999)) { 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 79a1262..b2bb441 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java @@ -176,18 +176,26 @@ public class CloudPrinterService { List details = tbOrderDetailMapper.selectAllByOrderId(Integer.valueOf(orderId)); if (ObjectUtil.isNotEmpty(details) && details.size() > 0) { details.parallelStream().filter(o -> ObjectUtil.defaultIfNull(o.getIsPrint(), 0) == 1).forEach(it -> { + long count = 0; + if (it.getIsTemporary() == 1) { + it.setProductId(0); + it.setProductSkuId(0); + it.setProductName("【临】" + it.getProductName()); + } else { + String categoryId = tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId(); + count = categoryInfos.stream().filter(c -> + c.getId().toString().equals(categoryId) + ).count(); + } - String categoryId = tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId(); - Long count = categoryInfos.stream().filter(c -> - c.getId().toString().equals(categoryId) - ).count(); - if (count > 0) { - TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getProductSkuId())); String remark = ""; - if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { - remark = tbProductSkuWithBLOBs.getSpecSnap(); + if (it.getIsTemporary() == 0) { + TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getProductSkuId())); + if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { + remark = tbProductSkuWithBLOBs.getSpecSnap(); + } } // todo 修改为bigdecimal From 136e119a2b1d84d9cb1cfbc9ef707f78f07d19c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Fri, 29 Nov 2024 09:56:45 +0800 Subject: [PATCH 33/77] =?UTF-8?q?=E5=B0=8F=E7=A5=A8=E6=89=93=E5=8D=B0bug?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rabbit/print/PrinterHandler.java | 2 +- .../cashierservice/util/PrinterUtils.java | 49 ++++++------------- src/main/resources/mapper/TbProductMapper.xml | 2 + 3 files changed, 19 insertions(+), 34 deletions(-) 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 90c7a96..e2d87a5 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 @@ -106,7 +106,7 @@ public abstract class PrinterHandler { if (isTemporary == 0 && sku == null) { log.error("商品不存在, id: {}", item.getProductSkuId()); return; - } else { + } else if(isTemporary == 1){ sku = new TbProductSkuWithBLOBs(); } if (StrUtil.isEmpty(machine.getClassifyPrint())) { diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java index b9398a6..03ef9f1 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java @@ -14,6 +14,7 @@ import org.slf4j.LoggerFactory; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; +import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; @@ -375,44 +376,26 @@ public class PrinterUtils { Map param = getToken(time, uuid); //参数 - //MultiValueMap multiValueMap = new LinkedMultiValueMap<>(); - Map map = new HashMap<>(); - map.put("token", param.get("TOKEN")); - map.put("devName", devName); - map.put("money", null); - map.put("content", "收款100元"); - map.put("broadCastType", "1"); - //multiValueMap.put("actWay", actWay); - //multiValueMap.put("cn", cn); - //multiValueMap.put("data", data); - //multiValueMap.put("voiceJson", voiceJson); - map.put("appId", APP_ID); - map.put("timestamp", time); - map.put("requestId", uuid); - map.put("userCode", USER_CODE); - map.put("bizType", "2"); + MultiValueMap multiValueMap = new LinkedMultiValueMap<>(); + multiValueMap.add("token", param.get("TOKEN")); + multiValueMap.add("devName", devName); + multiValueMap.add("actWay", actWay); + multiValueMap.add("cn", cn); + multiValueMap.add("data", data); + multiValueMap.add("voiceJson", voiceJson); + multiValueMap.add("appId", APP_ID); + multiValueMap.add("timestamp", time); + multiValueMap.add("requestId", uuid); + multiValueMap.add("userCode", USER_CODE); RestTemplate restTemplate = new RestTemplate(); HttpHeaders header = new HttpHeaders(); header.setContentType(MediaType.APPLICATION_FORM_URLENCODED); - String s = HttpUtil.get("https://ioe.car900.com/v1/openApi/dev/controlDevice.json", map, 50000); - System.out.println(s); + HttpEntity> httpEntity = new HttpEntity<>(multiValueMap, header); + String httpResponse = restTemplate.postForObject(URL_STR, + httpEntity, String.class); - HttpEntity> httpEntity = null; - String httpResponse; - try { - httpResponse = restTemplate.getForObject("https://ioe.car900.com/v1/openApi/dev/registerCloud.json", - String.class); - System.out.println("map" + httpResponse); - return httpResponse; - } catch (Exception e) { - if (StrUtil.containsAny(e.getMessage(), "timed out")) { - log.error("请求云享印超时,请稍后再试"); - httpResponse = "{\"code\":-1, \"msg\":\"请求云享印超时,请稍后再试\"}"; - } else { - httpResponse = "{\"code\":-2, \"msg\":\"请求云享印出错,请稍后再试\"}"; - } - } + System.out.println("map" + httpResponse); return httpResponse; } diff --git a/src/main/resources/mapper/TbProductMapper.xml b/src/main/resources/mapper/TbProductMapper.xml index 1bf154a..be823f4 100644 --- a/src/main/resources/mapper/TbProductMapper.xml +++ b/src/main/resources/mapper/TbProductMapper.xml @@ -543,11 +543,13 @@ group by shop_id,product_id + select From 0c5421bdc1bcfec261e895c0ab9d57552ebc9e54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Mon, 2 Dec 2024 15:14:58 +0800 Subject: [PATCH 40/77] =?UTF-8?q?=E7=82=B9=E9=A4=90=E6=9C=BA=E9=87=8D?= =?UTF-8?q?=E6=89=93=E5=B0=8F=E7=A5=A8BUG=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/cashierservice/service/CloudPrinterService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 a22e06a..bf80f8c 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java @@ -317,7 +317,7 @@ public class CloudPrinterService { if (ispre) { cashierCarts = tbCashierCartMapper.selectByOrderId(orderInfo.getId().toString(), "create"); } else { - cashierCarts = tbCashierCartMapper.selectByOrderId(orderInfo.getId().toString(), "final"); + cashierCarts = tbCashierCartMapper.selectByOrderId(orderInfo.getId().toString(), "closed"); } if (ObjectUtil.isNotEmpty(cashierCarts) && cashierCarts.size() > 0) { @@ -561,7 +561,7 @@ public class CloudPrinterService { if (ispre) { return Result.fail("预结算单不打印标签"); } - List cashierCarts = tbCashierCartMapper.selectByOrderId(orderInfo.getId().toString(), "final"); + List cashierCarts = tbCashierCartMapper.selectByOrderId(orderInfo.getId().toString(), "closed"); if (ObjectUtil.isNotEmpty(cashierCarts) && cashierCarts.size() > 0) { cashierCarts.parallelStream().forEach(it -> { Long count = categoryInfos.stream().filter(c -> From a4963408aba515b3c13bb5c771395522fca30587 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Tue, 3 Dec 2024 17:44:52 +0800 Subject: [PATCH 41/77] =?UTF-8?q?=E7=82=B9=E9=A4=90=E6=9C=BA=E5=95=86?= =?UTF-8?q?=E5=93=81=E6=94=AF=E6=8C=81=E5=A5=97=E9=A4=90=E7=82=B9=E9=A4=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/cashierservice/entity/TbProduct.java | 4 ++++ .../system/cashierservice/service/ProductService.java | 8 +++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProduct.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProduct.java index 9144866..d8a944c 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProduct.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProduct.java @@ -1,6 +1,7 @@ package com.chaozhanggui.system.cashierservice.entity; import com.baomidou.mybatisplus.annotation.TableField; +import com.chaozhanggui.system.cashierservice.entity.vo.ProductGroupVo; import lombok.Data; import org.springframework.data.annotation.Transient; @@ -88,6 +89,9 @@ public class TbProduct implements Serializable { private String selectSpec; @TableField(exist = false) private String unitName; + @Transient + @TableField(exist = false) + private List proGroupVo; } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java index ca7666b..42a4ae2 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/ProductService.java @@ -1,15 +1,13 @@ package com.chaozhanggui.system.cashierservice.service; import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.chaozhanggui.system.cashierservice.dao.*; import com.chaozhanggui.system.cashierservice.entity.*; import com.chaozhanggui.system.cashierservice.entity.dto.ProductStatusDTO; import com.chaozhanggui.system.cashierservice.entity.dto.ProductStockDTO; -import com.chaozhanggui.system.cashierservice.entity.dto.QuerySpecDTO; +import com.chaozhanggui.system.cashierservice.entity.vo.ProductGroupVo; import com.chaozhanggui.system.cashierservice.entity.vo.ShopCategoryVo; import com.chaozhanggui.system.cashierservice.exception.MsgException; import com.chaozhanggui.system.cashierservice.interceptor.LimitSubmitAspect; @@ -18,6 +16,7 @@ import com.chaozhanggui.system.cashierservice.rabbit.RabbitProducer; import com.chaozhanggui.system.cashierservice.sign.CodeEnum; import com.chaozhanggui.system.cashierservice.sign.Result; import com.chaozhanggui.system.cashierservice.util.DateUtils; +import com.chaozhanggui.system.cashierservice.util.JSONUtil; import com.chaozhanggui.system.cashierservice.util.PageHelperUtil; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; @@ -160,6 +159,9 @@ public class ProductService { it.setGroundingSpecInfo(querySpec(Integer.valueOf(shopId), it.getId())); TbShopUnit tbShopUnit = finalShopUnitsMap.get(it.getUnitId()); it.setUnitName(tbShopUnit == null ? null : tbShopUnit.getName()); + if ("package".equals(it.getType())) { + it.setProGroupVo(JSONUtil.parseListTNewList(it.getGroupSnap(), ProductGroupVo.class)); + } }); } PageInfo pageInfo=new PageInfo(tbProductWithBLOBs); From 355510e3bdccb5c4515829235a7d74e7a6f23aab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Tue, 3 Dec 2024 18:03:23 +0800 Subject: [PATCH 42/77] =?UTF-8?q?=E7=82=B9=E9=A4=90=E6=9C=BA=E5=95=86?= =?UTF-8?q?=E5=93=81=E6=94=AF=E6=8C=81=E5=A5=97=E9=A4=90=E7=82=B9=E9=A4=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chaozhanggui/system/cashierservice/entity/TbProduct.java | 1 + src/main/resources/mapper/TbProductSkuMapper.xml | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProduct.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProduct.java index d8a944c..2f1a764 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProduct.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbProduct.java @@ -87,6 +87,7 @@ public class TbProduct implements Serializable { private Object groundingSpecInfo; private String specInfo; private String selectSpec; + private Integer groupType; @TableField(exist = false) private String unitName; @Transient diff --git a/src/main/resources/mapper/TbProductSkuMapper.xml b/src/main/resources/mapper/TbProductSkuMapper.xml index 4469347..29228a4 100644 --- a/src/main/resources/mapper/TbProductSkuMapper.xml +++ b/src/main/resources/mapper/TbProductSkuMapper.xml @@ -23,6 +23,7 @@ + @@ -31,7 +32,7 @@ id, shop_id, bar_code, product_id, origin_price, cost_price, member_price, meal_price, sale_price, guide_price, strategy_price, stock_number, cover_img, weight, - volume, real_sales_number, first_shared, second_shared, created_at, updated_at,suit + volume, real_sales_number, first_shared, second_shared, created_at, updated_at,suit,group_type spec_info, spec_snap From 2eeb90758a3a9839aa82315da636baa6f436f3e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Wed, 4 Dec 2024 09:46:33 +0800 Subject: [PATCH 43/77] =?UTF-8?q?=E7=82=B9=E9=A4=90=E6=9C=BA=E5=95=86?= =?UTF-8?q?=E5=93=81=E6=94=AF=E6=8C=81=E5=A5=97=E9=A4=90=E7=82=B9=E9=A4=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/mapper/TbProductSkuMapper.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/resources/mapper/TbProductSkuMapper.xml b/src/main/resources/mapper/TbProductSkuMapper.xml index 29228a4..4469347 100644 --- a/src/main/resources/mapper/TbProductSkuMapper.xml +++ b/src/main/resources/mapper/TbProductSkuMapper.xml @@ -23,7 +23,6 @@ - @@ -32,7 +31,7 @@ id, shop_id, bar_code, product_id, origin_price, cost_price, member_price, meal_price, sale_price, guide_price, strategy_price, stock_number, cover_img, weight, - volume, real_sales_number, first_shared, second_shared, created_at, updated_at,suit,group_type + volume, real_sales_number, first_shared, second_shared, created_at, updated_at,suit spec_info, spec_snap From a365c5b56eb054afcdfbafa36780cf64ff99ff1b 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, 4 Dec 2024 11:42:26 +0800 Subject: [PATCH 44/77] =?UTF-8?q?feat:=20=E7=82=B9=E5=8D=95=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=A5=97=E9=A4=90=E5=95=86=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bean/constant/TableConstant.java | 17 ++++++ .../controller/OrderController.java | 2 +- .../cashierservice/entity/TbCashierCart.java | 1 + .../cashierservice/entity/TbOrderDetail.java | 3 +- .../cashierservice/entity/vo/CartVo.java | 4 ++ .../cashierservice/service/OrderService.java | 61 ++++++++++++++++++- 6 files changed, 83 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/bean/constant/TableConstant.java b/src/main/java/com/chaozhanggui/system/cashierservice/bean/constant/TableConstant.java index d55aa34..33f77d9 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/bean/constant/TableConstant.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/bean/constant/TableConstant.java @@ -20,6 +20,23 @@ public interface TableConstant { } } + class Product { + @Getter + public enum Type { + NORMAL("normal"), PACKAGE("package"); + private final String value; + + Type(String value) { + this.value = value; + } + + public boolean equalsVals(String value) { + return this.value.equals(value); + } + + } + } + class ShopTable { @Getter public enum State { diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java b/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java index 0085da8..436b46c 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/OrderController.java @@ -42,7 +42,7 @@ public class OrderController { String userId = jsonObject.getString("accountId"); return orderService.createCart(cartVo.getMasterId(), cartVo.getProductId(), cartVo.getShopId(), cartVo.getSkuId(), cartVo.getNumber(), userId, clientType, cartVo.getCartId(), cartVo.getIsGift(), - cartVo.getIsPack(), cartVo.getUuid(), cartVo.getType(), cartVo.getTableId(), cartVo.getIsPrint()); + cartVo.getIsPack(), cartVo.getUuid(), cartVo.getType(), cartVo.getTableId(), cartVo.getIsPrint(), cartVo.getGroupProductIdList()); } @PutMapping("/print") 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 d6f05c0..0aeb5b3 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbCashierCart.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbCashierCart.java @@ -86,6 +86,7 @@ public class TbCashierCart implements Serializable { private Integer isPrint; private String useCouponInfo; private int isThirdCoupon; + private String proGroupInfo; 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 489000d..52589da 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbOrderDetail.java @@ -62,7 +62,6 @@ public class TbOrderDetail implements Serializable { private BigDecimal discountSaleAmount; private String discountSaleNote; - - + private String proGroupInfo; } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/CartVo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/CartVo.java index 0d754bc..849d793 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/CartVo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/CartVo.java @@ -7,6 +7,7 @@ import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.math.BigDecimal; +import java.util.List; @Data public class CartVo { @@ -27,4 +28,7 @@ public class CartVo { private String tableId; private Integer orderId; private Integer isPrint; + + // 套餐商品选择的id信息 + private List groupProductIdList; } 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 06f1370..a879947 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -23,6 +23,7 @@ import com.chaozhanggui.system.cashierservice.entity.po.OrderPo; import com.chaozhanggui.system.cashierservice.entity.po.QueryCartPo; import com.chaozhanggui.system.cashierservice.entity.po.SkuInfoPo; import com.chaozhanggui.system.cashierservice.entity.vo.CartVo; +import com.chaozhanggui.system.cashierservice.entity.vo.ProductGroupVo; import com.chaozhanggui.system.cashierservice.exception.MsgException; import com.chaozhanggui.system.cashierservice.exception.NotPrintException; import com.chaozhanggui.system.cashierservice.mybatis.*; @@ -31,7 +32,6 @@ import com.chaozhanggui.system.cashierservice.rabbit.RabbitProducer; import com.chaozhanggui.system.cashierservice.sign.CodeEnum; import com.chaozhanggui.system.cashierservice.sign.Result; import com.chaozhanggui.system.cashierservice.util.*; -import com.fasterxml.jackson.core.io.BigDecimalParser; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -215,9 +215,56 @@ public class OrderService { shopId, tableId, isTakeout ? OrderSendTypeEnums.TAKE_SELF.getValue() : OrderSendTypeEnums.TABLE.getValue()); } + + /** + * 重置购物车套餐商品信息 + */ + private void resetGroupProductCart(List productIds, TbProduct product, TbCashierCart cashierCart) { + boolean isChoseGroup = TableConstant.Product.Type.PACKAGE.equalsVals(product.getType()) && product.getGroupType() == 1; + boolean isFixGroup = TableConstant.Product.Type.PACKAGE.equalsVals(product.getType()) && product.getGroupType() == 0; + if (isChoseGroup && productIds != null && !productIds.isEmpty()) { + String groupSnap = product.getGroupSnap(); + if (StrUtil.isNotBlank(groupSnap)) { + ArrayList foods = new ArrayList<>(); + HashMap groupVoHashMap = new HashMap<>(); + JSONObject.parseArray(groupSnap).forEach(item -> { + ProductGroupVo productGroupVo = ((JSONObject) item).toJavaObject(ProductGroupVo.class); + productGroupVo.getGoods().forEach(goods -> { + groupVoHashMap.put(goods.getProId().toString(), goods); + }); + }); + + productIds.forEach(item -> { + ProductGroupVo.Food food = groupVoHashMap.get(item.toString()); + if (food == null) { + throw new MsgException("存在无效套餐商品"); + } + foods.add(food); + }); + + cashierCart.setProGroupInfo(JSONObject.toJSONString(foods)); + } + }else if (isFixGroup) { + String groupSnap = product.getGroupSnap(); + if (StrUtil.isNotBlank(groupSnap)) { + ArrayList foods = new ArrayList<>(); + HashMap groupVoHashMap = new HashMap<>(); + JSONObject.parseArray(groupSnap).forEach(item -> { + ProductGroupVo productGroupVo = ((JSONObject) item).toJavaObject(ProductGroupVo.class); + productGroupVo.getGoods().forEach(goods -> { + groupVoHashMap.put(goods.getProId().toString(), goods); + }); + }); + + cashierCart.setProGroupInfo(JSONObject.toJSONString(groupVoHashMap.values())); + } + } + } + @Transactional(rollbackFor = Exception.class) public Result createCart(String masterId, Integer productId, Integer shopId, Integer skuId, BigDecimal number, - String userId, String clientType, Integer cartId, String isGift, String isPack, String uuid, String type, String tableId, Integer isPrint) { + String userId, String clientType, Integer cartId, String isGift, String isPack, String uuid, + String type, String tableId, Integer isPrint, List groupProductIdList) { if (number == null) { return Result.fail(CodeEnum.PARAM); } @@ -353,6 +400,9 @@ public class OrderService { cart.resetTotalAmount(); cart.setUuid(uuid); cart.setIsPrint(isPrint); + if (product != null) { + resetGroupProductCart(groupProductIdList, product, cart); + } cashierCartMapper.updateByPrimaryKeySelective(cart); } else { List list = cashierCartMapper.selectALlByMasterId(masterId, "create"); @@ -409,6 +459,9 @@ public class OrderService { cashierCart.setUuid(uuid); cashierCart.setTableId(tableId); cashierCart.setPlatformType(OrderPlatformTypeEnum.CASH.getValue()); + if (product != null) { + resetGroupProductCart(groupProductIdList, product, cashierCart); + } list.add(cashierCart); mpCashierCartMapper.insert(cashierCart); } else { @@ -417,6 +470,9 @@ public class OrderService { } else { cashierCart.setNumber(number); } + if (product != null) { + resetGroupProductCart(groupProductIdList, product, cashierCart); + } cashierCart.setIsPrint(isPrint); cashierCart.resetTotalAmount(); mpCashierCartMapper.updateById(cashierCart); @@ -943,6 +999,7 @@ public class OrderService { saleAmount = saleAmount.add(shopInfo.getTableFee()); } + orderDetail.setProGroupInfo(cashierCart.getProGroupInfo()); orderDetail.setIsTemporary(cashierCart.getIsTemporary()); orderDetail.setDiscountSaleNote(cashierCart.getDiscountSaleNote()); orderDetail.setDiscountSaleAmount(cashierCart.getDiscountSaleAmount()); From a3d5b735dba71a1f0d8110e3d815f625a4b77f6e 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, 4 Dec 2024 16:13:43 +0800 Subject: [PATCH 45/77] =?UTF-8?q?feat:=20=E7=82=B9=E9=A4=90=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/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 a879947..64331cf 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -332,7 +332,7 @@ public class OrderService { } // 首次加入购物车,并且拥有起售数,设置为起售数 - if (cart == null && skuWithBLOBs.getSuit() != null && skuWithBLOBs.getSuit() != 0) { + if (cart == null && skuWithBLOBs.getSuit() != null && skuWithBLOBs.getSuit() != 0 && number.compareTo(BigDecimal.valueOf(skuWithBLOBs.getSuit())) < 0) { number = BigDecimal.valueOf(skuWithBLOBs.getSuit()); // 低于起售,删除商品 } else if (cart != null && skuWithBLOBs.getSuit() != null && skuWithBLOBs.getSuit() != 0 && number.compareTo(BigDecimal.valueOf(skuWithBLOBs.getSuit())) < 0) { From f3c10eabd9533c94f720c0adc013cbff10859a6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Wed, 4 Dec 2024 17:59:34 +0800 Subject: [PATCH 46/77] =?UTF-8?q?=E5=B0=8F=E7=A5=A8=E6=89=93=E5=8D=B0bug?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashierservice/rabbit/PrintMechineConsumer.java | 8 ++++---- .../system/cashierservice/rabbit/print/FeiPrinter.java | 4 ++-- .../system/cashierservice/rabbit/print/YxyPrinter.java | 4 ++-- .../cashierservice/service/CloudPrinterService.java | 8 ++++---- 4 files changed, 12 insertions(+), 12 deletions(-) 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 d1b1318..df9e5c8 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java @@ -195,7 +195,7 @@ public class PrintMechineConsumer { if (ObjectUtil.isNotEmpty(detailList) && detailList.size() > 0) { - OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", ObjectUtil.isEmpty(orderInfo.getMasterId()) || ObjectUtil.isNull(orderInfo.getMasterId()) ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getPayAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList, orderInfo.getRemark(), null, null); + OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", ObjectUtil.isEmpty(orderInfo.getMasterId()) || ObjectUtil.isNull(orderInfo.getMasterId()) ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOriginAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList, orderInfo.getRemark(), null, null); String printType = "退款单"; @@ -246,7 +246,7 @@ public class PrintMechineConsumer { OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getOrderType().equals("miniapp") ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), - "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, + "【POS-1】001", orderInfo.getOriginAmount().toPlainString(), balance, (ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType()), "0", detailList, orderInfo.getRemark(), orderInfo.getDiscountAmount() != null ? orderInfo.getDiscountAmount().toPlainString() : null, orderInfo.getDiscountRatio() != null ? orderInfo.getDiscountRatio().toPlainString() : null); @@ -603,7 +603,7 @@ public class PrintMechineConsumer { "普通打印", ObjectUtil.isEmpty(orderInfo.getMasterId()) || ObjectUtil.isNull(orderInfo.getMasterId()) ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), - "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), + "【POS-1】001", orderInfo.getOriginAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList, orderInfo.getRemark(), orderInfo.getDiscountAmount() == null ? null : orderInfo.getDiscountAmount().toPlainString(), orderInfo.getDiscountRatio() == null ? null : orderInfo.getDiscountRatio().toPlainString()); @@ -656,7 +656,7 @@ public class PrintMechineConsumer { } } if (ObjectUtil.isNotEmpty(detailList) && detailList.size() > 0) { - OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getOrderType().equals("miniapp") ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, (ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType()), "0", detailList, orderInfo.getRemark(), orderInfo.getDiscountAmount() == null ? null : orderInfo.getDiscountAmount().toPlainString(), orderInfo.getDiscountRatio() == null ? null : orderInfo.getDiscountRatio().toPlainString()); + OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getOrderType().equals("miniapp") ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOriginAmount().toPlainString(), balance, (ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType()), "0", detailList, orderInfo.getRemark(), orderInfo.getDiscountAmount() == null ? null : orderInfo.getDiscountAmount().toPlainString(), orderInfo.getDiscountRatio() == null ? null : orderInfo.getDiscountRatio().toPlainString()); String printType = "结算单"; if ("return".equals(orderInfo.getOrderType())) { diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/FeiPrinter.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/FeiPrinter.java index 506c928..7aec6a2 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/FeiPrinter.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/FeiPrinter.java @@ -81,7 +81,7 @@ public class FeiPrinter extends PrinterHandler { OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getOrderType().equals("miniapp") ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), - "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, + "【POS-1】001", orderInfo.getOriginAmount().toPlainString(), balance, (ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType()), "0", detailList, orderInfo.getRemark(), orderInfo.getDiscountAmount() == null ? null : orderInfo.getDiscountAmount().toPlainString(), orderInfo.getDiscountRatio() == null ? null : orderInfo.getDiscountRatio().toPlainString()); String printType = "退款单"; @@ -101,7 +101,7 @@ public class FeiPrinter extends PrinterHandler { OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getOrderType().equals("miniapp") ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), - "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, + "【POS-1】001", orderInfo.getOriginAmount().toPlainString(), balance, (ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType()), "0", detailList, orderInfo.getRemark(), orderInfo.getDiscountAmount() == null ? null : orderInfo.getDiscountAmount().toPlainString(), orderInfo.getDiscountRatio() == null ? null : orderInfo.getDiscountRatio().toPlainString()); String printType = "结算单"; diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/YxyPrinter.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/YxyPrinter.java index 2f11557..0d27d8b 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/YxyPrinter.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/YxyPrinter.java @@ -91,7 +91,7 @@ public class YxyPrinter extends PrinterHandler { TbShopInfo shopInfo = shopInfoMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getShopId())); OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", getPickupNum(orderInfo), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), - "【POS-1】001", orderInfo.getPayAmount().toPlainString(), balance, orderInfo.getPayType(), + "【POS-1】001", orderInfo.getOriginAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList, orderInfo.getRemark(), null, null); String printType = "退款单"; @@ -110,7 +110,7 @@ public class YxyPrinter extends PrinterHandler { OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", getPickupNum(orderInfo), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), - "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, + "【POS-1】001", orderInfo.getOriginAmount().toPlainString(), balance, (ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType()), "0", detailList, orderInfo.getRemark(), orderInfo.getDiscountAmount() != null ? orderInfo.getDiscountAmount().toPlainString() : null, orderInfo.getDiscountRatio() != null ? orderInfo.getDiscountRatio().toPlainString() : null); 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 bf80f8c..0ec1454 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java @@ -296,7 +296,7 @@ public class CloudPrinterService { OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", ObjectUtil.isEmpty(orderInfo.getMasterId()) || ObjectUtil.isNull(orderInfo.getMasterId()) ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), - "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, orderInfo.getPayType(), "0", + "【POS-1】001", orderInfo.getOriginAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList, orderInfo.getRemark(), orderInfo.getDiscountAmount() == null ? null : orderInfo.getDiscountAmount().toPlainString(), orderInfo.getDiscountRatio() == null ? null : orderInfo.getDiscountRatio().toPlainString()); detailPO.setOutNumber(orderInfo.getOutNumber()); String printType = "退款单"; @@ -362,7 +362,7 @@ public class CloudPrinterService { OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getOrderType().equals("miniapp") ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), - "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), + "【POS-1】001", orderInfo.getOriginAmount().toPlainString(), balance, (ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType()), "0", detailList, orderInfo.getRemark(), orderInfo.getDiscountAmount() != null ? orderInfo.getDiscountAmount().toPlainString() : null, orderInfo.getDiscountRatio() != null ? orderInfo.getDiscountRatio().toPlainString() : null); String printType = "结算单"; @@ -428,7 +428,7 @@ public class CloudPrinterService { if (ObjectUtil.isNotEmpty(detailList) && detailList.size() > 0) { // OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList); - OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", ObjectUtil.isEmpty(orderInfo.getMasterId()) || ObjectUtil.isNull(orderInfo.getMasterId()) ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList, orderInfo.getRemark(), null, null); + OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", ObjectUtil.isEmpty(orderInfo.getMasterId()) || ObjectUtil.isNull(orderInfo.getMasterId()) ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOriginAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList, orderInfo.getRemark(), null, null); String printType = "退款单"; @@ -487,7 +487,7 @@ public class CloudPrinterService { OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getOrderType().equals("miniapp") ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), - "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), + "【POS-1】001", orderInfo.getOriginAmount().toPlainString(), balance, (ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType()), "0", detailList, orderInfo.getRemark(), orderInfo.getDiscountAmount() == null ? null : orderInfo.getDiscountAmount().toPlainString(), orderInfo.getDiscountRatio() == null ? null : orderInfo.getDiscountRatio().toPlainString()); String printType = "结算单"; From 587dd5b1a66b6b29dd973c2b614473619ba75cfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Wed, 4 Dec 2024 18:29:31 +0800 Subject: [PATCH 47/77] =?UTF-8?q?=E5=B0=8F=E7=A5=A8=E6=89=93=E5=8D=B0bug?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/cashierservice/rabbit/PrintMechineConsumer.java | 7 +++---- .../system/cashierservice/rabbit/print/PrinterHandler.java | 3 +-- .../system/cashierservice/service/CloudPrinterService.java | 5 ++--- 3 files changed, 6 insertions(+), 9 deletions(-) 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 df9e5c8..780606c 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java @@ -1,6 +1,5 @@ package com.chaozhanggui.system.cashierservice.rabbit; -import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -180,7 +179,7 @@ public class PrintMechineConsumer { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), NumberUtil.mul(it.getNum(), it.getPrice()).toPlainString(), remark); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), it.getPriceAmount().toPlainString(), remark); detailList.add(detail); }); @@ -228,7 +227,7 @@ public class PrintMechineConsumer { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), NumberUtil.mul(it.getNum(), it.getPrice()).toPlainString(), remark); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), it.getPriceAmount().toPlainString(), remark); detailList.add(detail); } }); @@ -583,7 +582,7 @@ public class PrintMechineConsumer { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), NumberUtil.mul(it.getNum(), it.getPrice()).toPlainString(), remark); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), it.getPriceAmount().toPlainString(), remark); 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 6324306..d66ca2b 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 @@ -1,7 +1,6 @@ package com.chaozhanggui.system.cashierservice.rabbit.print; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONArray; @@ -168,7 +167,7 @@ public abstract class PrinterHandler { if (isTemporary == 1) { it.setProductName("【临】" + it.getProductName()); } - OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), NumberUtil.mul(it.getNum(), it.getPrice()).toPlainString(), remark); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), it.getPriceAmount().toPlainString(), remark); detailList.add(detail); }); 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 0ec1454..93c1318 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java @@ -1,7 +1,6 @@ package com.chaozhanggui.system.cashierservice.service; -import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -277,7 +276,7 @@ public class CloudPrinterService { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), NumberUtil.mul(it.getNum(), it.getPrice()).toPlainString(), remark); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), it.getPriceAmount().toPlainString(), remark); detailList.add(detail); }); @@ -412,7 +411,7 @@ public class CloudPrinterService { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), NumberUtil.mul(it.getNum(), it.getPrice()).toPlainString(), remark); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), it.getPriceAmount().toPlainString(), remark); detailList.add(detail); }); From 1a2e4bc3bc17b3fc0c2aa4dc0919b552a6655b93 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, 5 Dec 2024 09:39:29 +0800 Subject: [PATCH 48/77] =?UTF-8?q?feat:=20=E5=A4=9A=E9=80=89=E5=A5=97?= =?UTF-8?q?=E9=A4=90=E6=AF=8F=E6=AC=A1=E6=96=B0=E5=A2=9E=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/cashierservice/entity/TbCashierCart.java | 2 ++ .../system/cashierservice/service/OrderService.java | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) 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 0aeb5b3..f05df71 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbCashierCart.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbCashierCart.java @@ -87,6 +87,8 @@ public class TbCashierCart implements Serializable { private String useCouponInfo; private int isThirdCoupon; private String proGroupInfo; + private String typeEnum; + private Integer groupType; public void copy(TbCashierCart source) { BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true)); 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 64331cf..75f50d2 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -391,7 +391,7 @@ public class OrderService { } - if (Objects.nonNull(cart)) { + if (Objects.nonNull(cart) && cart.getGroupType() != null && cart.getGroupType() == 0) { //查询现有规格商品 cart.setNumber(number); cart.setIsGift(isGift); @@ -408,7 +408,7 @@ public class OrderService { List list = cashierCartMapper.selectALlByMasterId(masterId, "create"); TbCashierCart cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO); // 不存在新增 - if (Objects.isNull(cashierCart)) { + if (Objects.isNull(cashierCart) || (cart != null && cart.getGroupType() != null && cart.getGroupType() == 1)) { cashierCart = new TbCashierCart(); cashierCart.setUseType(shopEatTypeInfoDTO.getUseType()); if (product != null) { @@ -416,6 +416,8 @@ public class OrderService { cashierCart.setIsSku(product.getTypeEnum()); cashierCart.setName(product.getName()); cashierCart.setCategoryId(product.getCategoryId()); + cashierCart.setTypeEnum(product.getTypeEnum()); + cashierCart.setGroupType(product.getGroupType()); } cashierCart.setCreatedAt(System.currentTimeMillis()); cashierCart.setMasterId(masterId); From c0d036a972a02eb6b586be575ac4b02c133c4c33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Thu, 5 Dec 2024 09:53:31 +0800 Subject: [PATCH 49/77] =?UTF-8?q?=E5=B0=8F=E7=A5=A8=E6=89=93=E5=8D=B0bug?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashierservice/rabbit/PrintMechineConsumer.java | 13 +++++++++---- .../cashierservice/rabbit/print/PrinterHandler.java | 5 ++++- .../cashierservice/service/CloudPrinterService.java | 13 +++++++++---- 3 files changed, 22 insertions(+), 9 deletions(-) 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 780606c..378435c 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java @@ -1,5 +1,6 @@ package com.chaozhanggui.system.cashierservice.rabbit; +import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -179,7 +180,8 @@ public class PrintMechineConsumer { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), it.getPriceAmount().toPlainString(), remark); + BigDecimal subTotal = NumberUtil.mul(it.getNum(), it.getPrice().subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), subTotal.toPlainString(), remark); detailList.add(detail); }); @@ -227,7 +229,8 @@ public class PrintMechineConsumer { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), it.getPriceAmount().toPlainString(), remark); + BigDecimal subTotal = NumberUtil.mul(it.getNum(), it.getPrice().subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), subTotal.toPlainString(), remark); detailList.add(detail); } }); @@ -582,7 +585,8 @@ public class PrintMechineConsumer { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), it.getPriceAmount().toPlainString(), remark); + BigDecimal subTotal = NumberUtil.mul(it.getNum(), it.getPrice().subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), subTotal.toPlainString(), remark); detailList.add(detail); }); @@ -640,7 +644,8 @@ public class PrintMechineConsumer { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getName(), it.getNumber().toString(), it.getTotalAmount().toPlainString(), remark); + BigDecimal subTotal = NumberUtil.mul(it.getNumber(), it.getSalePrice().subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getName(), it.getNumber().toString(), subTotal.toPlainString(), remark); 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 d66ca2b..1ba5ddb 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 @@ -1,6 +1,7 @@ package com.chaozhanggui.system.cashierservice.rabbit.print; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONArray; @@ -18,6 +19,7 @@ import lombok.Setter; import lombok.ToString; import lombok.extern.slf4j.Slf4j; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; @@ -167,7 +169,8 @@ public abstract class PrinterHandler { if (isTemporary == 1) { it.setProductName("【临】" + it.getProductName()); } - OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), it.getPriceAmount().toPlainString(), remark); + BigDecimal subTotal = NumberUtil.mul(it.getNum(), it.getPrice().subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), subTotal.toPlainString(), remark); detailList.add(detail); }); 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 93c1318..2b9ca0d 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java @@ -1,6 +1,7 @@ package com.chaozhanggui.system.cashierservice.service; +import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -276,7 +277,8 @@ public class CloudPrinterService { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), it.getPriceAmount().toPlainString(), remark); + BigDecimal subTotal = NumberUtil.mul(it.getNum(), it.getPrice().subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), subTotal.toPlainString(), remark); detailList.add(detail); }); @@ -340,7 +342,8 @@ public class CloudPrinterService { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getName(), it.getNumber().toString(), it.getTotalAmount().toPlainString(), remark); + BigDecimal subTotal = NumberUtil.mul(it.getNumber(), it.getSalePrice().subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getName(), it.getNumber().toString(), subTotal.toPlainString(), remark); detailList.add(detail); } @@ -411,7 +414,8 @@ public class CloudPrinterService { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), it.getPriceAmount().toPlainString(), remark); + BigDecimal subTotal = NumberUtil.mul(it.getNum(), it.getPrice().subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), subTotal.toPlainString(), remark); detailList.add(detail); }); @@ -468,7 +472,8 @@ public class CloudPrinterService { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getName(), it.getNumber().toString(), it.getTotalAmount().toPlainString(), remark); + BigDecimal subTotal = NumberUtil.mul(it.getNumber(), it.getSalePrice().subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getName(), it.getNumber().toString(), subTotal.toPlainString(), remark); detailList.add(detail); } From 2006b09d168d28ee0d65e1835b8d37f2f1a65722 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Thu, 5 Dec 2024 10:56:04 +0800 Subject: [PATCH 50/77] =?UTF-8?q?=E5=B0=8F=E7=A5=A8=E6=89=93=E5=8D=B0bug?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rabbit/PrintMechineConsumer.java | 14 +++++++++----- .../cashierservice/rabbit/print/FeiPrinter.java | 8 ++++++-- .../cashierservice/rabbit/print/YxyPrinter.java | 9 ++++++--- .../service/CloudPrinterService.java | 13 +++++++++---- 4 files changed, 30 insertions(+), 14 deletions(-) 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 378435c..37fe1d1 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java @@ -1,5 +1,6 @@ package com.chaozhanggui.system.cashierservice.rabbit; +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -196,7 +197,8 @@ public class PrintMechineConsumer { if (ObjectUtil.isNotEmpty(detailList) && detailList.size() > 0) { - OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", ObjectUtil.isEmpty(orderInfo.getMasterId()) || ObjectUtil.isNull(orderInfo.getMasterId()) ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOriginAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList, orderInfo.getRemark(), null, null); + BigDecimal originAmount = detailList.stream().map(obj -> Convert.toBigDecimal(obj.getAmount())).reduce(BigDecimal.ZERO, BigDecimal::add); + OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", ObjectUtil.isEmpty(orderInfo.getMasterId()) || ObjectUtil.isNull(orderInfo.getMasterId()) ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", originAmount.toPlainString(), balance, orderInfo.getPayType(), "0", detailList, orderInfo.getRemark(), null, null); String printType = "退款单"; @@ -244,11 +246,11 @@ public class PrintMechineConsumer { } if (ObjectUtil.isNotEmpty(detailList) && detailList.size() > 0) { - + BigDecimal originAmount = detailList.stream().map(obj -> Convert.toBigDecimal(obj.getAmount())).reduce(BigDecimal.ZERO, BigDecimal::add); OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getOrderType().equals("miniapp") ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), - "【POS-1】001", orderInfo.getOriginAmount().toPlainString(), balance, + "【POS-1】001", originAmount.toPlainString(), balance, (ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType()), "0", detailList, orderInfo.getRemark(), orderInfo.getDiscountAmount() != null ? orderInfo.getDiscountAmount().toPlainString() : null, orderInfo.getDiscountRatio() != null ? orderInfo.getDiscountRatio().toPlainString() : null); @@ -602,11 +604,12 @@ public class PrintMechineConsumer { if (ObjectUtil.isNotEmpty(detailList) && detailList.size() > 0) { // OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList); + BigDecimal originAmount = detailList.stream().map(obj -> Convert.toBigDecimal(obj.getAmount())).reduce(BigDecimal.ZERO, BigDecimal::add); OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", ObjectUtil.isEmpty(orderInfo.getMasterId()) || ObjectUtil.isNull(orderInfo.getMasterId()) ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), - "【POS-1】001", orderInfo.getOriginAmount().toPlainString(), + "【POS-1】001", originAmount.toPlainString(), balance, orderInfo.getPayType(), "0", detailList, orderInfo.getRemark(), orderInfo.getDiscountAmount() == null ? null : orderInfo.getDiscountAmount().toPlainString(), orderInfo.getDiscountRatio() == null ? null : orderInfo.getDiscountRatio().toPlainString()); @@ -660,7 +663,8 @@ public class PrintMechineConsumer { } } if (ObjectUtil.isNotEmpty(detailList) && detailList.size() > 0) { - OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getOrderType().equals("miniapp") ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOriginAmount().toPlainString(), balance, (ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType()), "0", detailList, orderInfo.getRemark(), orderInfo.getDiscountAmount() == null ? null : orderInfo.getDiscountAmount().toPlainString(), orderInfo.getDiscountRatio() == null ? null : orderInfo.getDiscountRatio().toPlainString()); + BigDecimal originAmount = detailList.stream().map(obj -> Convert.toBigDecimal(obj.getAmount())).reduce(BigDecimal.ZERO, BigDecimal::add); + OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getOrderType().equals("miniapp") ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", originAmount.toPlainString(), balance, (ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType()), "0", detailList, orderInfo.getRemark(), orderInfo.getDiscountAmount() == null ? null : orderInfo.getDiscountAmount().toPlainString(), orderInfo.getDiscountRatio() == null ? null : orderInfo.getDiscountRatio().toPlainString()); String printType = "结算单"; if ("return".equals(orderInfo.getOrderType())) { diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/FeiPrinter.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/FeiPrinter.java index 7aec6a2..270a9f5 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/FeiPrinter.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/FeiPrinter.java @@ -1,5 +1,6 @@ package com.chaozhanggui.system.cashierservice.rabbit.print; +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -24,6 +25,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -78,10 +80,11 @@ public class FeiPrinter extends PrinterHandler { @Override protected void returnOrderPrint(TbOrderInfo orderInfo, TbPrintMachine machine, String balance, List detailList) { TbShopInfo shopInfo = mpShopInfoMapper.selectById(orderInfo.getShopId()); + BigDecimal originAmount = detailList.stream().map(obj -> Convert.toBigDecimal(obj.getAmount())).reduce(BigDecimal.ZERO, BigDecimal::add); OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getOrderType().equals("miniapp") ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), - "【POS-1】001", orderInfo.getOriginAmount().toPlainString(), balance, + "【POS-1】001", originAmount.toPlainString(), balance, (ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType()), "0", detailList, orderInfo.getRemark(), orderInfo.getDiscountAmount() == null ? null : orderInfo.getDiscountAmount().toPlainString(), orderInfo.getDiscountRatio() == null ? null : orderInfo.getDiscountRatio().toPlainString()); String printType = "退款单"; @@ -98,10 +101,11 @@ public class FeiPrinter extends PrinterHandler { @Override protected void normalOrderPrint(TbOrderInfo orderInfo, TbPrintMachine machine, String balance, List detailList) { TbShopInfo shopInfo = mpShopInfoMapper.selectById(orderInfo.getShopId()); + BigDecimal originAmount = detailList.stream().map(obj -> Convert.toBigDecimal(obj.getAmount())).reduce(BigDecimal.ZERO, BigDecimal::add); OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getOrderType().equals("miniapp") ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), - "【POS-1】001", orderInfo.getOriginAmount().toPlainString(), balance, + "【POS-1】001", originAmount.toPlainString(), balance, (ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType()), "0", detailList, orderInfo.getRemark(), orderInfo.getDiscountAmount() == null ? null : orderInfo.getDiscountAmount().toPlainString(), orderInfo.getDiscountRatio() == null ? null : orderInfo.getDiscountRatio().toPlainString()); String printType = "结算单"; diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/YxyPrinter.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/YxyPrinter.java index 0d27d8b..8d304aa 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/YxyPrinter.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/YxyPrinter.java @@ -1,5 +1,6 @@ package com.chaozhanggui.system.cashierservice.rabbit.print; +import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -23,6 +24,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -89,9 +91,10 @@ public class YxyPrinter extends PrinterHandler { @Override protected void returnOrderPrint(TbOrderInfo orderInfo, TbPrintMachine machine, String balance, List detailList) { TbShopInfo shopInfo = shopInfoMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getShopId())); + BigDecimal originAmount = detailList.stream().map(obj -> Convert.toBigDecimal(obj.getAmount())).reduce(BigDecimal.ZERO, BigDecimal::add); OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", getPickupNum(orderInfo), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), - "【POS-1】001", orderInfo.getOriginAmount().toPlainString(), balance, orderInfo.getPayType(), + "【POS-1】001", originAmount.toPlainString(), balance, orderInfo.getPayType(), "0", detailList, orderInfo.getRemark(), null, null); String printType = "退款单"; @@ -106,11 +109,11 @@ public class YxyPrinter extends PrinterHandler { @Override protected void normalOrderPrint(TbOrderInfo orderInfo, TbPrintMachine machine, String balance, List detailList) { TbShopInfo shopInfo = shopInfoMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getShopId())); - + BigDecimal originAmount = detailList.stream().map(obj -> Convert.toBigDecimal(obj.getAmount())).reduce(BigDecimal.ZERO, BigDecimal::add); OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", getPickupNum(orderInfo), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), - "【POS-1】001", orderInfo.getOriginAmount().toPlainString(), balance, + "【POS-1】001", originAmount.toPlainString(), balance, (ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType()), "0", detailList, orderInfo.getRemark(), orderInfo.getDiscountAmount() != null ? orderInfo.getDiscountAmount().toPlainString() : null, orderInfo.getDiscountRatio() != null ? orderInfo.getDiscountRatio().toPlainString() : null); 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 2b9ca0d..6943ab8 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java @@ -1,6 +1,7 @@ package com.chaozhanggui.system.cashierservice.service; +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -294,10 +295,11 @@ public class CloudPrinterService { if (ObjectUtil.isNotEmpty(detailList) && detailList.size() > 0) { // OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList); + BigDecimal originAmount = detailList.stream().map(obj -> Convert.toBigDecimal(obj.getAmount())).reduce(BigDecimal.ZERO, BigDecimal::add); OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", ObjectUtil.isEmpty(orderInfo.getMasterId()) || ObjectUtil.isNull(orderInfo.getMasterId()) ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), - "【POS-1】001", orderInfo.getOriginAmount().toPlainString(), balance, orderInfo.getPayType(), "0", + "【POS-1】001", originAmount.toPlainString(), balance, orderInfo.getPayType(), "0", detailList, orderInfo.getRemark(), orderInfo.getDiscountAmount() == null ? null : orderInfo.getDiscountAmount().toPlainString(), orderInfo.getDiscountRatio() == null ? null : orderInfo.getDiscountRatio().toPlainString()); detailPO.setOutNumber(orderInfo.getOutNumber()); String printType = "退款单"; @@ -361,10 +363,11 @@ public class CloudPrinterService { } if (ObjectUtil.isNotEmpty(detailList) && detailList.size() > 0) { + BigDecimal originAmount = detailList.stream().map(obj -> Convert.toBigDecimal(obj.getAmount())).reduce(BigDecimal.ZERO, BigDecimal::add); OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getOrderType().equals("miniapp") ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), - "【POS-1】001", orderInfo.getOriginAmount().toPlainString(), + "【POS-1】001", originAmount.toPlainString(), balance, (ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType()), "0", detailList, orderInfo.getRemark(), orderInfo.getDiscountAmount() != null ? orderInfo.getDiscountAmount().toPlainString() : null, orderInfo.getDiscountRatio() != null ? orderInfo.getDiscountRatio().toPlainString() : null); String printType = "结算单"; @@ -431,7 +434,8 @@ public class CloudPrinterService { if (ObjectUtil.isNotEmpty(detailList) && detailList.size() > 0) { // OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOrderAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList); - OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", ObjectUtil.isEmpty(orderInfo.getMasterId()) || ObjectUtil.isNull(orderInfo.getMasterId()) ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", orderInfo.getOriginAmount().toPlainString(), balance, orderInfo.getPayType(), "0", detailList, orderInfo.getRemark(), null, null); + BigDecimal originAmount = detailList.stream().map(obj -> Convert.toBigDecimal(obj.getAmount())).reduce(BigDecimal.ZERO, BigDecimal::add); + OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", ObjectUtil.isEmpty(orderInfo.getMasterId()) || ObjectUtil.isNull(orderInfo.getMasterId()) ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), "【POS-1】001", originAmount.toPlainString(), balance, orderInfo.getPayType(), "0", detailList, orderInfo.getRemark(), null, null); String printType = "退款单"; @@ -488,10 +492,11 @@ public class CloudPrinterService { } } if (ObjectUtil.isNotEmpty(detailList) && detailList.size() > 0) { + BigDecimal originAmount = detailList.stream().map(obj -> Convert.toBigDecimal(obj.getAmount())).reduce(BigDecimal.ZERO, BigDecimal::add); OrderDetailPO detailPO = new OrderDetailPO(shopInfo.getShopName(), "普通打印", orderInfo.getOrderType().equals("miniapp") ? orderInfo.getTableName() : orderInfo.getMasterId(), orderInfo.getOrderNo(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), - "【POS-1】001", orderInfo.getOriginAmount().toPlainString(), + "【POS-1】001", originAmount.toPlainString(), balance, (ObjectUtil.isEmpty(orderInfo.getPayType()) || ObjectUtil.isNull(orderInfo.getPayType()) ? "" : orderInfo.getPayType()), "0", detailList, orderInfo.getRemark(), orderInfo.getDiscountAmount() == null ? null : orderInfo.getDiscountAmount().toPlainString(), orderInfo.getDiscountRatio() == null ? null : orderInfo.getDiscountRatio().toPlainString()); String printType = "结算单"; From 8bb4f4176e7b1b1f4224d44c2fce0ca085b6401c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Thu, 5 Dec 2024 11:13:49 +0800 Subject: [PATCH 51/77] =?UTF-8?q?=E5=B0=8F=E7=A5=A8=E6=89=93=E5=8D=B0bug?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rabbit/PrintMechineConsumer.java | 24 +++++++++++++++---- .../rabbit/print/PrinterHandler.java | 6 ++++- .../service/CloudPrinterService.java | 24 +++++++++++++++---- 3 files changed, 45 insertions(+), 9 deletions(-) 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 37fe1d1..3b3a959 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java @@ -181,7 +181,11 @@ public class PrintMechineConsumer { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - BigDecimal subTotal = NumberUtil.mul(it.getNum(), it.getPrice().subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); + BigDecimal unitPrice = it.getPrice(); + if(it.getIsMember() == 1){ + unitPrice = it.getMemberPrice(); + } + 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); detailList.add(detail); @@ -231,7 +235,11 @@ public class PrintMechineConsumer { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - BigDecimal subTotal = NumberUtil.mul(it.getNum(), it.getPrice().subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); + BigDecimal unitPrice = it.getPrice(); + if(it.getIsMember() == 1){ + unitPrice = it.getMemberPrice(); + } + 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); detailList.add(detail); } @@ -587,7 +595,11 @@ public class PrintMechineConsumer { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - BigDecimal subTotal = NumberUtil.mul(it.getNum(), it.getPrice().subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); + BigDecimal unitPrice = it.getPrice(); + if(it.getIsMember() == 1){ + unitPrice = it.getMemberPrice(); + } + 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); detailList.add(detail); @@ -647,7 +659,11 @@ public class PrintMechineConsumer { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - BigDecimal subTotal = NumberUtil.mul(it.getNumber(), it.getSalePrice().subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); + BigDecimal unitPrice = it.getSalePrice(); + if(it.getIsMember() == 1){ + unitPrice = it.getMemberPrice(); + } + 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); 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 1ba5ddb..86ea2e7 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 @@ -169,7 +169,11 @@ public abstract class PrinterHandler { if (isTemporary == 1) { it.setProductName("【临】" + it.getProductName()); } - BigDecimal subTotal = NumberUtil.mul(it.getNum(), it.getPrice().subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); + BigDecimal unitPrice = it.getPrice(); + if(it.getIsMember() == 1){ + unitPrice = it.getMemberPrice(); + } + 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); detailList.add(detail); 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 6943ab8..8fa09f3 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java @@ -278,7 +278,11 @@ public class CloudPrinterService { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - BigDecimal subTotal = NumberUtil.mul(it.getNum(), it.getPrice().subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); + BigDecimal unitPrice = it.getPrice(); + if(it.getIsMember() == 1){ + unitPrice = it.getMemberPrice(); + } + 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); detailList.add(detail); @@ -344,7 +348,11 @@ public class CloudPrinterService { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - BigDecimal subTotal = NumberUtil.mul(it.getNumber(), it.getSalePrice().subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); + BigDecimal unitPrice = it.getSalePrice(); + if(it.getIsMember() == 1){ + unitPrice = it.getMemberPrice(); + } + 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); detailList.add(detail); } @@ -417,7 +425,11 @@ public class CloudPrinterService { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - BigDecimal subTotal = NumberUtil.mul(it.getNum(), it.getPrice().subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); + BigDecimal unitPrice = it.getPrice(); + if(it.getIsMember() == 1){ + unitPrice = it.getMemberPrice(); + } + 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); detailList.add(detail); @@ -476,7 +488,11 @@ public class CloudPrinterService { if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } - BigDecimal subTotal = NumberUtil.mul(it.getNumber(), it.getSalePrice().subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); + BigDecimal unitPrice = it.getSalePrice(); + if(it.getIsMember() == 1){ + unitPrice = it.getMemberPrice(); + } + 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); detailList.add(detail); } From 85a5ae848d53a2fd4ef7030ef99b622ded03a5dc 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, 5 Dec 2024 13:38:43 +0800 Subject: [PATCH 52/77] =?UTF-8?q?feat:=20=E8=AE=A2=E5=8D=95=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E8=BF=94=E5=9B=9E=E5=A5=97=E9=A4=90=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chaozhanggui/system/cashierservice/entity/po/OrderPo.java | 1 + src/main/resources/mapper/TbOrderInfoMapper.xml | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/OrderPo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/OrderPo.java index b1f2ce9..12cc12c 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/OrderPo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/OrderPo.java @@ -31,6 +31,7 @@ public class OrderPo { private BigDecimal discountRatio; private BigDecimal discountAmount; + private String proGroupInfo; } diff --git a/src/main/resources/mapper/TbOrderInfoMapper.xml b/src/main/resources/mapper/TbOrderInfoMapper.xml index bd356cc..fcd3588 100644 --- a/src/main/resources/mapper/TbOrderInfoMapper.xml +++ b/src/main/resources/mapper/TbOrderInfoMapper.xml @@ -80,7 +80,8 @@ toi.remark, toi.master_id as masterId, toi.discount_ratio as discountRatio, - toi.discount_amount as discountAmount + toi.discount_amount as discountAmount, + toi.pro_group_info as proGroupInfo FROM From 3fca6a7cb8cae459c24669ce75ba58b9b911aa25 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, 5 Dec 2024 13:41:58 +0800 Subject: [PATCH 53/77] =?UTF-8?q?feat:=20=E8=AE=A2=E5=8D=95=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E8=BF=94=E5=9B=9E=E5=A5=97=E9=A4=90=E4=BF=A1=E6=81=AF?= 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 fcd3588..c433288 100644 --- a/src/main/resources/mapper/TbOrderInfoMapper.xml +++ b/src/main/resources/mapper/TbOrderInfoMapper.xml @@ -81,7 +81,7 @@ toi.master_id as masterId, toi.discount_ratio as discountRatio, toi.discount_amount as discountAmount, - toi.pro_group_info as proGroupInfo + tod.pro_group_info as proGroupInfo FROM From e95640a4adde0440c89e8e893a8a20cf0a95f31c 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, 5 Dec 2024 13:47:35 +0800 Subject: [PATCH 54/77] =?UTF-8?q?feat:=20=E8=AE=A2=E5=8D=95=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E8=BF=94=E5=9B=9E=E5=A5=97=E9=A4=90=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/cashierservice/entity/po/OrderPo.java | 1 - .../system/cashierservice/entity/po/SkuInfoPo.java | 1 + src/main/resources/mapper/TbOrderInfoMapper.xml | 9 +++++---- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/OrderPo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/OrderPo.java index 12cc12c..b1f2ce9 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/OrderPo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/OrderPo.java @@ -31,7 +31,6 @@ public class OrderPo { private BigDecimal discountRatio; private BigDecimal discountAmount; - private String proGroupInfo; } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/SkuInfoPo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/SkuInfoPo.java index 2bf1b31..121c560 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/SkuInfoPo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/SkuInfoPo.java @@ -14,4 +14,5 @@ public class SkuInfoPo { private BigDecimal packAmount; private String categoryId; private BigDecimal price; + private String proGroupInfo; } diff --git a/src/main/resources/mapper/TbOrderInfoMapper.xml b/src/main/resources/mapper/TbOrderInfoMapper.xml index c433288..0c19221 100644 --- a/src/main/resources/mapper/TbOrderInfoMapper.xml +++ b/src/main/resources/mapper/TbOrderInfoMapper.xml @@ -80,8 +80,7 @@ toi.remark, toi.master_id as masterId, toi.discount_ratio as discountRatio, - toi.discount_amount as discountAmount, - tod.pro_group_info as proGroupInfo + toi.discount_amount as discountAmount FROM @@ -613,7 +612,8 @@ select * from tb_order_info where trade_day = #{day} and table_id = #{masterId} c.category_id AS categoryId, d.price_amount as priceAmount, d.pack_amount as packAmount, - d.price as price + d.price as price, + d.pro_group_info as proGroupInfo FROM tb_order_detail d LEFT JOIN tb_cashier_cart c ON d.order_id = c.order_id @@ -633,7 +633,8 @@ select * from tb_order_info where trade_day = #{day} and table_id = #{masterId} '' AS categoryId, d.price_amount as priceAmount, d.pack_amount as packAmount, - d.price as price + d.price as price, + d.pro_group_info as proGroupInfo FROM tb_order_detail d where d.order_id=#{orderId} From 2bdd72287d43d151ee4fec164da6a35b251848c0 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, 5 Dec 2024 15:19:52 +0800 Subject: [PATCH 55/77] =?UTF-8?q?feat:=20json=E5=BA=8F=E5=88=97=E5=8C=96?= =?UTF-8?q?=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 | 9 +++++++-- 1 file changed, 7 insertions(+), 2 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 75f50d2..c33486f 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -239,7 +239,9 @@ public class OrderService { if (food == null) { throw new MsgException("存在无效套餐商品"); } - foods.add(food); + ProductGroupVo.Food copyFood = new ProductGroupVo.Food(); + BeanUtil.copyProperties(copyFood, food); + foods.add(copyFood); }); cashierCart.setProGroupInfo(JSONObject.toJSONString(foods)); @@ -252,7 +254,10 @@ public class OrderService { JSONObject.parseArray(groupSnap).forEach(item -> { ProductGroupVo productGroupVo = ((JSONObject) item).toJavaObject(ProductGroupVo.class); productGroupVo.getGoods().forEach(goods -> { - groupVoHashMap.put(goods.getProId().toString(), goods); + ProductGroupVo.Food copyFood = new ProductGroupVo.Food(); + BeanUtil.copyProperties(copyFood, goods); + foods.add(copyFood); + groupVoHashMap.put(goods.getProId().toString(), copyFood); }); }); From 1f637c6d50c7dbb3bbc6a3c80c946a615eef4ef5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Thu, 5 Dec 2024 18:03:49 +0800 Subject: [PATCH 56/77] =?UTF-8?q?=E5=B0=8F=E7=A5=A8=E6=89=93=E5=8D=B0bug?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashierservice/model/OrderDetailPO.java | 4 +- .../rabbit/PrintMechineConsumer.java | 22 +-- .../rabbit/print/FeiPrinter.java | 2 +- .../rabbit/print/PrinterHandler.java | 2 +- .../rabbit/print/YxyPrinter.java | 6 +- .../service/CloudPrinterService.java | 14 +- .../cashierservice/util/FeieyunPrintUtil.java | 50 ++++-- .../cashierservice/util/PrinterUtils.java | 29 +++- .../cashierservice/util/YunXiangYinUtil.java | 145 ++++++++++++++++++ 9 files changed, 232 insertions(+), 42 deletions(-) create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/util/YunXiangYinUtil.java diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/model/OrderDetailPO.java b/src/main/java/com/chaozhanggui/system/cashierservice/model/OrderDetailPO.java index dda62d8..7032d06 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/model/OrderDetailPO.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/model/OrderDetailPO.java @@ -49,12 +49,14 @@ public class OrderDetailPO implements Serializable { private String amount; private String spec; + private String proGroupInfo; - public Detail(String productName, String number, String amount, String spec) { + public Detail(String productName, String number, String amount, String spec, String proGroupInfo) { this.productName = productName; this.number = number; this.amount = amount; this.spec = spec; + this.proGroupInfo = proGroupInfo; } } 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 3b3a959..c87b580 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java @@ -186,7 +186,7 @@ public class PrintMechineConsumer { unitPrice = it.getMemberPrice(); } 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); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), subTotal.toPlainString(), remark, it.getProGroupInfo()); detailList.add(detail); }); @@ -240,7 +240,7 @@ public class PrintMechineConsumer { unitPrice = it.getMemberPrice(); } 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); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), subTotal.toPlainString(), remark, it.getProGroupInfo()); detailList.add(detail); } }); @@ -367,14 +367,14 @@ public class PrintMechineConsumer { data = PrinterUtils.getPrintData("return", StrUtil.isBlank(orderInfo.getTableName()) ? orderInfo.getMasterId() : orderInfo.getTableName(), - DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getProductName(), Math.abs(printerNum), remark, null); + DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getProductName(), Math.abs(printerNum), remark, null, it.getProGroupInfo()); voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔退款订单,请及时处理\"}"; PrinterUtils.printTickets(voiceJson, 3, 1, tbPrintMachineWithBLOBs.getAddress(), data); } else { data = PrinterUtils.getPrintData("", orderInfo.getMasterId(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getProductName(), - printerNum, remark, null); + printerNum, remark, null, it.getProGroupInfo()); voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; PrinterUtils.printTickets(voiceJson, 3, 1, tbPrintMachineWithBLOBs.getAddress(), data); @@ -393,7 +393,7 @@ public class PrintMechineConsumer { String data = PrinterUtils.getPrintData("return", StrUtil.isBlank(orderInfo.getTableName()) ? orderInfo.getMasterId() : orderInfo.getTableName(), // todo 修改为bigdecimal - DateUtils.getTime(new Date(orderInfo.getCreatedAt())), orderDetail.getProductName(), orderDetail.getNum().intValue(), orderDetail.getRemark(), null); + DateUtils.getTime(new Date(orderInfo.getCreatedAt())), orderDetail.getProductName(), orderDetail.getNum().intValue(), orderDetail.getRemark(), null, orderDetail.getProGroupInfo()); String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔退款订单,请及时处理\"}"; PrinterUtils.printTickets(voiceJson, 3, 1, tbPrintMachineWithBLOBs.getAddress(), data); @@ -462,7 +462,7 @@ public class PrintMechineConsumer { // todo 修改为bigdecimal String data = PrinterUtils.getPrintData("return", StrUtil.isBlank(orderInfo.getTableName()) ? orderInfo.getMasterId() : orderInfo.getTableName(), - DateUtils.getTime(new Date(orderInfo.getCreatedAt())), orderDetail.getProductName(), orderDetail.getNum().intValue(), orderDetail.getRemark(), null); + DateUtils.getTime(new Date(orderInfo.getCreatedAt())), orderDetail.getProductName(), orderDetail.getNum().intValue(), orderDetail.getRemark(), null, orderDetail.getProGroupInfo()); String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔退款订单,请及时处理\"}"; PrinterUtils.printTickets(voiceJson, 3, 1, machine.getAddress(), data); @@ -505,7 +505,7 @@ public class PrintMechineConsumer { // todo 修改为bigdecimal String data = PrinterUtils.getPrintData("", orderInfo.getMasterId(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getProductName(), - it.getNum().intValue(), remark, null); + it.getNum().intValue(), remark, null, it.getProGroupInfo()); String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; PrinterUtils.printTickets(voiceJson, 3, 1, tbPrintMachineWithBLOBs.getAddress(), data); } @@ -548,7 +548,7 @@ public class PrintMechineConsumer { // todo 修改为bigdecimal String data = PrinterUtils.getPrintData("return", orderInfo.getPayType().equals("wx_lite") ? - orderInfo.getTableName() : orderInfo.getMasterId(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getProductName(), it.getNum().intValue(), remark, null); + orderInfo.getTableName() : orderInfo.getMasterId(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getProductName(), it.getNum().intValue(), remark, null, it.getProGroupInfo()); String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔退款订单,请及时处理\"}"; PrinterUtils.printTickets(voiceJson, 3, 1, tbPrintMachineWithBLOBs.getAddress(), data); } @@ -600,7 +600,7 @@ public class PrintMechineConsumer { unitPrice = it.getMemberPrice(); } 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); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), subTotal.toPlainString(), remark, it.getProGroupInfo()); detailList.add(detail); }); @@ -664,7 +664,7 @@ public class PrintMechineConsumer { unitPrice = it.getMemberPrice(); } 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); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getName(), it.getNumber().toString(), subTotal.toPlainString(), remark, it.getProGroupInfo()); detailList.add(detail); } @@ -729,7 +729,7 @@ public class PrintMechineConsumer { } - FeieyunPrintUtil.getPrintData(tbPrintMachineWithBLOBs.getAddress(), orderInfo, DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getName(), it.getNumber().intValue(), remark); + FeieyunPrintUtil.getPrintData(tbPrintMachineWithBLOBs.getAddress(), orderInfo, DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getName(), it.getNumber().intValue(), remark, it.getProGroupInfo()); } }); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/FeiPrinter.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/FeiPrinter.java index 270a9f5..0f7a054 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/FeiPrinter.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/FeiPrinter.java @@ -73,7 +73,7 @@ public class FeiPrinter extends PrinterHandler { String remark = sku == null ? "" : sku.getSpecSnap(); // todo 修改为bigdecimal String[] resp = FeieyunPrintUtil.getPrintData(machine.getAddress(), orderInfo, - DateUtils.getTime(new Date(orderInfo.getCreatedAt())), orderDetail.getProductName(), orderDetail.getNum().intValue(), remark); + DateUtils.getTime(new Date(orderInfo.getCreatedAt())), orderDetail.getProductName(), orderDetail.getNum().intValue(), remark, orderDetail.getProGroupInfo()); shopPrintLogService.save(machine, "新订单", resp[0], resp[1]); } 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 86ea2e7..1ab385a 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 @@ -174,7 +174,7 @@ public abstract class PrinterHandler { unitPrice = it.getMemberPrice(); } 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); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), subTotal.toPlainString(), remark, it.getProGroupInfo()); detailList.add(detail); }); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/YxyPrinter.java b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/YxyPrinter.java index 8d304aa..214ddf7 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/YxyPrinter.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/print/YxyPrinter.java @@ -68,7 +68,7 @@ public class YxyPrinter extends PrinterHandler { String data = PrinterUtils.getPrintData("return", getPickupNum(orderInfo), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), orderDetail.getProductName(), - orderDetail.getNum().abs().intValue(), orderDetail.getRemark(), orderDetail.getNote()); + orderDetail.getNum().abs().intValue(), orderDetail.getRemark(), orderDetail.getNote(), orderDetail.getProGroupInfo()); String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔退款订单,请及时处理\"}"; // String voiceJson = "{\"bizType\":\"2\",\"content\":\"\"}"; String resp = PrinterUtils.printTickets(voiceJson, 3, 1, machine.getAddress(), data); @@ -81,7 +81,7 @@ public class YxyPrinter extends PrinterHandler { String data = PrinterUtils.getPrintData("", getPickupNum(orderInfo), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), orderDetail.getProductName(), - orderDetail.getNum().intValue(), orderDetail.getRemark(), orderDetail.getNote()); + orderDetail.getNum().intValue(), orderDetail.getRemark(), orderDetail.getNote(), orderDetail.getProGroupInfo()); String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; // String voiceJson = "{\"bizType\":\"2\",\"content\":\"\"}"; String resp = PrinterUtils.printTickets(voiceJson, 3, 1, machine.getAddress(), data); @@ -163,7 +163,7 @@ public class YxyPrinter extends PrinterHandler { public static void main(String[] args) { String data = PrinterUtils.getPrintData("", "#3", DateUtils.getTime(DateUtil.date()), "九度", - Integer.valueOf("20"), "少冰", "加菜防守打法火速地方啊地上1三大法宝苏俄倒海翻江"); + Integer.valueOf("20"), "少冰", "加菜防守打法火速地方啊地上1三大法宝苏俄倒海翻江",""); String voiceJson = "{\"bizType\":\"2\",\"content\":\"\"}"; PrinterUtils.printTickets(voiceJson, 3, 1, "ZF544PG03W00005", data); } 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 8fa09f3..876fc8f 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java @@ -205,7 +205,7 @@ public class CloudPrinterService { // todo 修改为bigdecimal String data = PrinterUtils.getPrintData("return", orderInfo.getPayType().equals("wx_lite") ? - orderInfo.getTableName() : orderInfo.getMasterId(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getProductName(), it.getNum().intValue(), remark, null); + orderInfo.getTableName() : orderInfo.getMasterId(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getProductName(), it.getNum().intValue(), remark, null, it.getProGroupInfo()); String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔退款订单,请及时处理\"}"; PrinterUtils.printTickets(voiceJson, 3, Integer.valueOf(printerNum), tbPrintMachineWithBLOBs.getAddress(), data); } @@ -241,7 +241,7 @@ public class CloudPrinterService { // todo 修改为bigdecimal String data = PrinterUtils.getPrintData("", orderInfo.getOrderType().equals("miniapp") ? - orderInfo.getTableName() : orderInfo.getMasterId(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getName(), it.getNumber().intValue(), remark, null); + orderInfo.getTableName() : orderInfo.getMasterId(), DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getName(), it.getNumber().intValue(), remark, null, it.getProGroupInfo()); String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; PrinterUtils.printTickets(voiceJson, 3, Integer.valueOf(printerNum), tbPrintMachineWithBLOBs.getAddress(), data); @@ -283,7 +283,7 @@ public class CloudPrinterService { unitPrice = it.getMemberPrice(); } 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); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), subTotal.toPlainString(), remark, it.getProGroupInfo()); detailList.add(detail); }); @@ -353,7 +353,7 @@ public class CloudPrinterService { unitPrice = it.getMemberPrice(); } 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); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getName(), it.getNumber().toString(), subTotal.toPlainString(), remark, it.getProGroupInfo()); detailList.add(detail); } @@ -430,7 +430,7 @@ public class CloudPrinterService { unitPrice = it.getMemberPrice(); } 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); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getProductName(), it.getNum().toString(), subTotal.toPlainString(), remark, it.getProGroupInfo()); detailList.add(detail); }); @@ -493,7 +493,7 @@ public class CloudPrinterService { unitPrice = it.getMemberPrice(); } 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); + OrderDetailPO.Detail detail = new OrderDetailPO.Detail(it.getName(), it.getNumber().toString(), subTotal.toPlainString(), remark, it.getProGroupInfo()); detailList.add(detail); } @@ -568,7 +568,7 @@ public class CloudPrinterService { } // todo 修改为bigdecimal - FeieyunPrintUtil.getPrintData(tbPrintMachineWithBLOBs.getAddress(), orderInfo, DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getName(), it.getNumber().intValue(), remark); + FeieyunPrintUtil.getPrintData(tbPrintMachineWithBLOBs.getAddress(), orderInfo, DateUtils.getTime(new Date(orderInfo.getCreatedAt())), it.getName(), it.getNumber().intValue(), remark, it.getProGroupInfo()); } }); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java index 83287f6..ecad5c5 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java @@ -1,11 +1,13 @@ package com.chaozhanggui.system.cashierservice.util; +import cn.hutool.core.convert.Convert; import cn.hutool.core.text.UnicodeUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.chaozhanggui.system.cashierservice.bean.OrderUseTypeEnum; @@ -121,24 +123,29 @@ public class FeieyunPrintUtil { } - public static String buildPrintContent(String pickupNumber, String date, String productName, Integer number, String remark) { + public static String buildPrintContent(String pickupNumber, String date, String productName, Integer number, String remark, String proGroupInfo) { StringBuilder builder = new StringBuilder(); builder.append("" + pickupNumber + "

"); builder.append("时间: " + date + "


"); remark = StrUtil.emptyToDefault(remark, ""); - if (productName.length() > 4 || remark.length() > 4) { - builder.append("" + productName + " x " + number + "

"); - builder.append("" + remark + "
"); - } else { - builder.append("" + productName + " x " + number + "

"); - builder.append("" + remark + "
"); + builder.append("" + productName + " x " + number + "

"); + builder.append("" + remark + "

"); + if (!StrUtil.isBlank(proGroupInfo) && cn.hutool.json.JSONUtil.isJsonArray(proGroupInfo)) { + JSONArray subItems = cn.hutool.json.JSONUtil.parseArray(proGroupInfo); + for (int i = 0; i < subItems.size(); i++) { + String proName = subItems.getJSONObject(i).getStr("proName"); + int qty = subItems.getJSONObject(i).getInt("number"); + builder.append("("+(i+1)+")"+proName + " x " + qty + "
"); + } } + + //builder.append(""); return builder.toString(); } - public static String[] getPrintData(String sn, TbOrderInfo orderInfo, String date, String productName, Integer number, String remark) { - String content = buildPrintContent(getPickupNum(orderInfo), date, productName, number, remark); + public static String[] getPrintData(String sn, TbOrderInfo orderInfo, String date, String productName, Integer number, String remark, String proGroupInfo) { + String content = buildPrintContent(getPickupNum(orderInfo), date, productName, number, remark, proGroupInfo); System.out.println("content:".concat(content)); @@ -230,7 +237,7 @@ public class FeieyunPrintUtil { data.append("--------------------------------
"); for (OrderDetailPO.Detail detail : detailPO.getDetailList()) { String productName = detail.getProductName(); - String number = detail.getNumber(); + String number = Convert.toBigDecimal(detail.getNumber()).setScale(0).toPlainString(); String amount = toPlainStr(detail.getAmount()); //58mm的机器,一行打印16个汉字,32个字母; 80mm的机器,一行打印24个汉字,48个字母 //展示4列 b1代表名称列占用(14个字节) b2单价列(6个字节) b3数量列(3个字节) b4金额列(6个字节)-->这里的字节数可按自己需求自由改写,14+6+3+6再加上代码写的3个空格就是32了,58mm打印机一行总占32字节 @@ -238,10 +245,23 @@ public class FeieyunPrintUtil { //展示3列 b1代表名称列占用(20个字节) b2单价列(0个字节) b3数量列(3个字节) b4金额列(6个字节)-->这里的字节数可按自己需求自由改写,20+0+3+6再加上代码写的3个空格就是32了,58mm打印机一行总占32字节 String row = FeieYunUtil.getRow(productName, "", number, amount, 20, 0, 3, 6); data.append(row); - if (StrUtil.isBlank(detail.getSpec())) { + if (StrUtil.isNotBlank(detail.getSpec())) { + data.append("规格:" + detail.getSpec() + "
"); + } + String proGroupInfo = detail.getProGroupInfo(); + if (StrUtil.isBlank(proGroupInfo)) { continue; } - data.append("规格:" + detail.getSpec() + "
"); + if (!JSONUtil.isJsonArray(proGroupInfo)) { + continue; + } + JSONArray subItems = JSONUtil.parseArray(proGroupInfo); + for (int i = 0; i < subItems.size(); i++) { + String proName = subItems.getJSONObject(i).getStr("proName"); + int qty = subItems.getJSONObject(i).getInt("number"); + String subRow = FeieYunUtil.getRow(" - "+proName, "", qty+"", "0.00", 20, 0, 3, 6); + data.append(subRow); + } } log.error("打印数据>>>>>>>>>>>>>>>>>>>>>:{}{}", detailPO.getDiscountAmount(), detailPO.getDiscountAdio()); if (ObjectUtil.isNotNull(detailPO.getDiscountAmount()) && ObjectUtil.isNotNull(detailPO.getDiscountAdio())) { @@ -506,7 +526,7 @@ public class FeieyunPrintUtil { public static void testPrint() { String STIME = String.valueOf(System.currentTimeMillis() / 1000); - String content = buildPrintContent("123456789", "2024-10-10 18:11:11", "澳洲大龙虾", 1, "一只吃爽爽"); + String content = buildPrintContent("123456789", "2024-10-10 18:11:11", "澳洲大龙虾", 1, "一只吃爽爽",""); Map paramMap = new HashMap<>(); // 参考文档:https://help.feieyun.com/home/doc/zh;nav=0-2 paramMap.put("user", USER); @@ -529,7 +549,7 @@ public class FeieyunPrintUtil { */ public static void testPrint2() { String STIME = String.valueOf(System.currentTimeMillis() / 1000); - String content = buildPrintContent("123456789", "2024-10-10 18:11:11", "澳洲大龙虾", 1, "一只吃爽爽"); + String content = buildPrintContent("123456789", "2024-10-10 18:11:11", "澳洲大龙虾", 1, "一只吃爽爽",""); Map paramMap = new HashMap<>(); // 参考文档:https://help.feieyun.com/home/doc/zh;nav=0-2 paramMap.put("user", USER); @@ -549,7 +569,7 @@ public class FeieyunPrintUtil { */ public static void testPrint3() { String STIME = String.valueOf(System.currentTimeMillis() / 1000); - String content = buildPrintContent("123456789", "2024-10-10 18:11:11", "澳洲大龙虾", 1, "一只吃爽爽"); + String content = buildPrintContent("123456789", "2024-10-10 18:11:11", "澳洲大龙虾", 1, "一只吃爽爽",""); Map paramMap = new HashMap<>(); // 参考文档:https://help.feieyun.com/home/doc/zh;nav=0-2 paramMap.put("user", USER); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java index 15c7830..f7a5653 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java @@ -1,9 +1,11 @@ package com.chaozhanggui.system.cashierservice.util; +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONArray; import com.chaozhanggui.system.cashierservice.entity.po.CallNumPrintPO; import com.chaozhanggui.system.cashierservice.entity.po.ProductInfo; import com.chaozhanggui.system.cashierservice.entity.po.ProductInfoPO; @@ -79,7 +81,7 @@ public class PrinterUtils { * @param remark sku规格名 * @param note 备注 */ - public static String getPrintData(String type, String pickupNumber, String date, String productName, Integer number, String remark, String note) { + public static String getPrintData(String type, String pickupNumber, String date, String productName, Integer number, String remark, String note, String proGroupInfo) { StringBuilder builder = new StringBuilder(); if ("return".equals(type)) { builder.append("").append(pickupNumber).append("【退】

"); @@ -102,6 +104,14 @@ public class PrinterUtils { if (StrUtil.isNotBlank(note)) { builder.append("备注: ").append(note == null ? "" : note).append("
"); } + if (!StrUtil.isBlank(proGroupInfo) && cn.hutool.json.JSONUtil.isJsonArray(proGroupInfo)) { + JSONArray subItems = cn.hutool.json.JSONUtil.parseArray(proGroupInfo); + for (int i = 0; i < subItems.size(); i++) { + String proName = subItems.getJSONObject(i).getStr("proName"); + int qty = subItems.getJSONObject(i).getInt("number"); + builder.append("("+(i+1)+")"+proName + " x " + qty + "
"); + } + } builder.append(""); builder.append(""); return builder.toString(); @@ -126,7 +136,7 @@ public class PrinterUtils { sb.append("").append(String.format("%-15s", "品名").replace(' ', paddingCharacter)).append(String.format("%-4s", "数量").replace(' ', paddingCharacter)).append(String.format("%4s", "小计").replace(' ', paddingCharacter)).append("
"); sb.append("------------------------
"); for (OrderDetailPO.Detail detail : detailPO.getDetailList()) { - + detail.setNumber(Convert.toBigDecimal(detail.getNumber()).setScale(0).toPlainString()); if (detail.getProductName().length() > 4 && detail.getProductName().length() <= 10) { int count = getProducrName(detail.getProductName()); @@ -150,7 +160,20 @@ public class PrinterUtils { if (detail.getSpec() != null && ObjectUtil.isNotEmpty(detail.getSpec())) { sb.append("规格:").append(detail.getSpec()).append("
"); } - + String proGroupInfo = detail.getProGroupInfo(); + if (StrUtil.isBlank(proGroupInfo)) { + continue; + } + if (!cn.hutool.json.JSONUtil.isJsonArray(proGroupInfo)) { + continue; + } + JSONArray subItems = cn.hutool.json.JSONUtil.parseArray(proGroupInfo); + for (int i = 0; i < subItems.size(); i++) { + String proName = subItems.getJSONObject(i).getStr("proName"); + int qty = subItems.getJSONObject(i).getInt("number"); + String subRow = YunXiangYinUtil.getRow(" - "+proName, "", qty+"", "0.00", 18, 0, 6, 4); + sb.append(subRow); + } } if (ObjectUtil.isNotNull(detailPO.getDiscountAmount()) && ObjectUtil.isNotNull(detailPO.getDiscountAdio())) { diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/YunXiangYinUtil.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/YunXiangYinUtil.java new file mode 100644 index 0000000..b93ca4e --- /dev/null +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/YunXiangYinUtil.java @@ -0,0 +1,145 @@ +package com.chaozhanggui.system.cashierservice.util; + +import lombok.experimental.UtilityClass; + +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.util.List; + +/** + * @author tankaikai + * @since 2024-10-15 15:12 + */ +@UtilityClass +public class YunXiangYinUtil { + + public String titleAddSpace(String str, int b1) { + int k = 0; + int b = b1; + try { + k = str.getBytes("GBK").length; + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + for (int i = 0; i < b - k; i++) { + str += " "; + } + return str; + } + + public static String getStringByEnter(int length, String string) throws Exception { + for (int i = 1; i <= string.length(); i++) { + if (string.substring(0, i).getBytes("GBK").length > length) { + return " " + string.substring(0, i - 1) + "
" + getStringByEnter(length, string.substring(i - 1)); + } + } + return " " + string + ""; + } + + public static String addSpace(String str, int size) { + int len = str.length(); + if (len < size) { + for (int i = 0; i < size - len; i++) { + str += " "; + } + } + return str; + } + + public static Boolean isEn(String str) { + Boolean b = false; + try { + b = str.getBytes("GBK").length == str.length(); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return b; + } + + public static List getStrList(String inputString, int length) { + int size = inputString.length() / length; + if (inputString.length() % length != 0) { + size += 1; + } + return getStrList(inputString, length, size); + } + + public static List getStrList(String inputString, int length, int size) { + List list = new ArrayList(); + for (int index = 0; index < size; index++) { + String childStr = substring(inputString, index * length, (index + 1) * length); + list.add(childStr); + } + return list; + } + + public static String substring(String str, int f, int t) { + if (f > str.length()) { + return null; + } + if (t > str.length()) { + return str.substring(f, str.length()); + } else { + return str.substring(f, t); + } + } + + /** + * 获取对齐后的小票明细行数据 + * 58mm的机器,一行打印16个汉字,32个字母;80mm的机器,一行打印24个汉字,48个字母 + * b1代表名称列占用字节 b2单价列 b3数量列 b4金额列-->这里的字节数可按自己需求自由改写 + * + * @param title 品名 + * @param price 单价 + * @param num 数量 + * @param total 小计 + * @param b1 品名占用字节 + * @param b2 单价占用字节 + * @param b3 数量占用字节 + * @param b4 小计占用字节 + * @return 对齐后的行数据 + */ + public static String getRow(String title, String price, String num, String total, int b1, int b2, int b3, int b4) { + price = addSpace(price, b2); + num = addSpace(num, b3); + total = addSpace(total, b4); + String otherStr = " " + price + num + " " + total; + int tl = 0; + try { + tl = title.getBytes("GBK").length; + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + int spaceNum = (tl / b1 + 1) * b1 - tl; + if (tl < b1) { + for (int k = 0; k < spaceNum; k++) { + title += " "; + } + title += otherStr; + title = "" + title + ""; + } else if (tl == b1) { + title += otherStr; + title = "" + title + ""; + } else { + List list = null; + if (isEn(title)) { + list = getStrList(title, b1); + } else { + list = getStrList(title, b1 / 2); + } + String s0 = titleAddSpace(list.get(0), b1); + title = "" + s0 + otherStr + "
";// 添加 单价 数量 总额 + String s = ""; + for (int k = 1; k < list.size(); k++) { + s += list.get(k); + } + try { + s = getStringByEnter(b1, s); + } catch (Exception e) { + e.printStackTrace(); + } + title += s; + } + return title + "
"; + } +} From 7dc01aeab8b1e2a6e37b414f1b8e1ac415a2459b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Fri, 6 Dec 2024 11:32:22 +0800 Subject: [PATCH 57/77] =?UTF-8?q?=E5=B0=8F=E7=A5=A8=E6=89=93=E5=8D=B0bug?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashierservice/util/FeieyunPrintUtil.java | 6 +- .../cashierservice/util/PrinterUtils.java | 114 +++++++----------- .../cashierservice/util/YunXiangYinUtil.java | 6 +- 3 files changed, 47 insertions(+), 79 deletions(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java index ecad5c5..fc941e2 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java @@ -243,7 +243,7 @@ public class FeieyunPrintUtil { //展示4列 b1代表名称列占用(14个字节) b2单价列(6个字节) b3数量列(3个字节) b4金额列(6个字节)-->这里的字节数可按自己需求自由改写,14+6+3+6再加上代码写的3个空格就是32了,58mm打印机一行总占32字节 //String row = FeieYunUtil.getRow(productName, "",number, amount, 14, 6,3, 6) //展示3列 b1代表名称列占用(20个字节) b2单价列(0个字节) b3数量列(3个字节) b4金额列(6个字节)-->这里的字节数可按自己需求自由改写,20+0+3+6再加上代码写的3个空格就是32了,58mm打印机一行总占32字节 - String row = FeieYunUtil.getRow(productName, "", number, amount, 20, 0, 3, 6); + String row = FeieYunUtil.getRow(productName, "", " "+number, amount, 20, 0, 4, 6); data.append(row); if (StrUtil.isNotBlank(detail.getSpec())) { data.append("规格:" + detail.getSpec() + "
"); @@ -259,7 +259,7 @@ public class FeieyunPrintUtil { for (int i = 0; i < subItems.size(); i++) { String proName = subItems.getJSONObject(i).getStr("proName"); int qty = subItems.getJSONObject(i).getInt("number"); - String subRow = FeieYunUtil.getRow(" - "+proName, "", qty+"", "0.00", 20, 0, 3, 6); + String subRow = FeieYunUtil.getRow(" - "+proName, "", qty+"", "0.00", 20, 0, 4, 6); data.append(subRow); } } @@ -276,9 +276,9 @@ public class FeieyunPrintUtil { } else { data.append(StrUtil.format("应收:{}
", t)); } + data.append("--------------------------------
"); if (ObjectUtil.isNotEmpty(detailPO.getPayType()) && ObjectUtil.isNotNull(detailPO.getPayType()) && detailPO.getPayType().equals("deposit")) { data.append(StrUtil.format("储值:{}
", toPlainStr(detailPO.getReceiptsAmount()))); - data.append("--------------------------------
"); data.append(StrUtil.format("积分:{}
", detailPO.getIntegral())); } data.append(StrUtil.format("余额:{}
", toPlainStr(detailPO.getBalance()))); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java index f7a5653..dd49da3 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java @@ -1,6 +1,5 @@ package com.chaozhanggui.system.cashierservice.util; -import cn.hutool.core.convert.Convert; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -119,46 +118,29 @@ public class PrinterUtils { public static String getCashPrintData(OrderDetailPO detailPO, String type, String orderType) { - log.info("getCashPrintData detailPO:{},type:{},orderType:{}", JSONUtil.toJSONString(detailPO), type, orderType); - StringBuilder sb = new StringBuilder(); - - sb.append("").append(detailPO.getMerchantName()).append("

"); - sb.append("").append(type).append("【").append(detailPO.getMasterId()).append("】

"); - if (Objects.nonNull(detailPO.getOutNumber())) { - sb.append("").append(detailPO.getOutNumber()).append("

"); - } - - sb.append("订单号: ").append(detailPO.getOrderNo()).append("
"); - sb.append("交易时间: ").append(detailPO.getTradeDate()).append("
"); - sb.append("收银员: ").append(detailPO.getOperator()).append("


"); - char paddingCharacter = ' '; - sb.append("").append(String.format("%-15s", "品名").replace(' ', paddingCharacter)).append(String.format("%-4s", "数量").replace(' ', paddingCharacter)).append(String.format("%4s", "小计").replace(' ', paddingCharacter)).append("
"); - sb.append("------------------------
"); + StringBuffer data = new StringBuffer(); + data.append(StrUtil.format("{}
", detailPO.getMerchantName())); + data.append("
"); + data.append(""); + data.append(StrUtil.format("{}【{}】
", type, detailPO.getMasterId())); + //if (Objects.nonNull(detailPO.getOutNumber())) { + // data.append(StrUtil.format("{}",detailPO.getOutNumber())); + //} + data.append(""); + data.append("
"); + data.append(StrUtil.format("订单号:{}
", detailPO.getOrderNo())); + data.append(StrUtil.format("交易时间:{}
", detailPO.getTradeDate())); + data.append(StrUtil.format("收银员:{}
", detailPO.getOperator())); + data.append(""); + data.append("
"); + data.append("品名 数量 小计
"); + data.append("--------------------------------
"); for (OrderDetailPO.Detail detail : detailPO.getDetailList()) { - detail.setNumber(Convert.toBigDecimal(detail.getNumber()).setScale(0).toPlainString()); - if (detail.getProductName().length() > 4 && detail.getProductName().length() <= 10) { - - int count = getProducrName(detail.getProductName()); - if (count <= 0) { - int length = 15 - (detail.getProductName().length() - 4); - sb.append("").append(String.format("%-" + length + "s", detail.getProductName()).replace(' ', paddingCharacter)).append(String.format("%-4s", detail.getNumber()).replace(' ', paddingCharacter)).append(String.format("%8s", toPlainStr(detail.getAmount())).replace(' ', paddingCharacter)).append("
"); - } else { - int length = 15 + count - (detail.getProductName().length() - 4); - sb.append("").append(String.format("%-" + length + "s", detail.getProductName()).replace(' ', paddingCharacter)).append(String.format("%-4s", detail.getNumber()).replace(' ', paddingCharacter)).append(String.format("%8s", toPlainStr(detail.getAmount())).replace(' ', paddingCharacter)).append("
"); - } - - } else if (detail.getProductName().length() > 10) { - - sb.append("").append(detail.getProductName()).append("
"); - sb.append("").append(String.format("%20s", detail.getNumber()).replace(' ', paddingCharacter)).append(String.format("%11s", toPlainStr(detail.getAmount())).replace(' ', paddingCharacter)).append("
"); - - } else { - sb.append("").append(String.format("%-15s", detail.getProductName()).replace(' ', paddingCharacter)).append(String.format("%-4s", detail.getNumber()).replace(' ', paddingCharacter)).append(String.format("%8s", toPlainStr(detail.getAmount())).replace(' ', paddingCharacter)).append("
"); - } - - if (detail.getSpec() != null && ObjectUtil.isNotEmpty(detail.getSpec())) { - sb.append("规格:").append(detail.getSpec()).append("
"); + String row = YunXiangYinUtil.getRow(detail.getProductName(), "", " " + detail.getNumber(), toPlainStr(detail.getAmount()), 20, 0, 4, 6); + data.append(row); + if (StrUtil.isNotBlank(detail.getSpec())) { + data.append("规格:").append(detail.getSpec()).append("
"); } String proGroupInfo = detail.getProGroupInfo(); if (StrUtil.isBlank(proGroupInfo)) { @@ -171,52 +153,38 @@ public class PrinterUtils { for (int i = 0; i < subItems.size(); i++) { String proName = subItems.getJSONObject(i).getStr("proName"); int qty = subItems.getJSONObject(i).getInt("number"); - String subRow = YunXiangYinUtil.getRow(" - "+proName, "", qty+"", "0.00", 18, 0, 6, 4); - sb.append(subRow); + String subRow = YunXiangYinUtil.getRow(" - "+proName, "", " "+qty, "0.00", 20, 0, 4, 6); + data.append(subRow); } } - if (ObjectUtil.isNotNull(detailPO.getDiscountAmount()) && ObjectUtil.isNotNull(detailPO.getDiscountAdio())) { - sb.append("------------------------
"); - sb.append("原价:".concat(String.format("%15s", toPlainStr(detailPO.getReceiptsAmount())).replace(' ', paddingCharacter)).concat("
")); - sb.append("折扣: ".concat(String.format("%15s", "-".concat(toPlainStr(detailPO.getDiscountAmount()))).replace(' ', paddingCharacter)).concat("
")); + data.append("--------------------------------
"); + data.append(StrUtil.format("原价:{}
", toPlainStr(detailPO.getReceiptsAmount()))); + data.append(StrUtil.format("折扣:-{}
", toPlainStr(detailPO.getDiscountAmount()))); } - - - sb.append("------------------------
"); + data.append("--------------------------------
"); String t = "¥" + (ObjectUtil.isEmpty(detailPO.getDiscountAmount()) || ObjectUtil.isNull(detailPO.getDiscountAmount()) ? toPlainStr(detailPO.getReceiptsAmount()) : NumberUtil.sub(new BigDecimal(detailPO.getReceiptsAmount()), new BigDecimal(detailPO.getDiscountAmount())).setScale(2, RoundingMode.DOWN).toPlainString()); - t = String.format("%11s", t).replace(' ', paddingCharacter); if (orderType.equals("return")) { - sb.append("应退" + t + "
"); + data.append("应退" + t + "
"); + data.append(StrUtil.format("应收:{}
", t)); } else { - sb.append("实付" + t + "
"); - + data.append(StrUtil.format("应收:{}
", t)); } + data.append("--------------------------------
"); if (ObjectUtil.isNotEmpty(detailPO.getPayType()) && ObjectUtil.isNotNull(detailPO.getPayType()) && detailPO.getPayType().equals("deposit")) { - sb.append("储值¥" + toPlainStr(detailPO.getReceiptsAmount()) + "
"); - sb.append("------------------------
"); - sb.append("积分:" + detailPO.getIntegral() + "
"); + data.append(StrUtil.format("储值:{}
", toPlainStr(detailPO.getReceiptsAmount()))); + data.append(StrUtil.format("积分:{}
", detailPO.getIntegral())); } - - sb.append("余额:" + toPlainStr(detailPO.getBalance()) + "
"); - sb.append("------------------------
"); - - if (ObjectUtil.isNotEmpty(detailPO.getRemark()) && ObjectUtil.isNotNull(detailPO.getRemark())) { - sb.append("备注:" + detailPO.getRemark() + "
"); - } - - + data.append(StrUtil.format("余额:{}
", toPlainStr(detailPO.getBalance()))); + data.append("--------------------------------
"); + data.append(StrUtil.format("备注:{}
", detailPO.getRemark())); if (Objects.nonNull(detailPO.getOutNumber())) { - sb.append("".concat(detailPO.getOutNumber()).concat("
")); + data.append("".concat(detailPO.getOutNumber()).concat("
")); } - - - sb.append("打印时间:" + DateUtils.getTime(new Date()) + "
"); - - sb.append(""); - sb.append(""); - return sb.toString(); - + data.append("打印时间:" + DateUtils.getTime(new Date()) + "
"); + data.append(""); + data.append(""); + return data.toString(); } private static String toPlainStr(String str) { diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/YunXiangYinUtil.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/YunXiangYinUtil.java index b93ca4e..dbf403f 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/YunXiangYinUtil.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/YunXiangYinUtil.java @@ -30,10 +30,10 @@ public class YunXiangYinUtil { public static String getStringByEnter(int length, String string) throws Exception { for (int i = 1; i <= string.length(); i++) { if (string.substring(0, i).getBytes("GBK").length > length) { - return " " + string.substring(0, i - 1) + "
" + getStringByEnter(length, string.substring(i - 1)); + return "" + string.substring(0, i - 1) + "
" + getStringByEnter(length, string.substring(i - 1)); } } - return " " + string + ""; + return "" + string + ""; } public static String addSpace(String str, int size) { @@ -128,7 +128,7 @@ public class YunXiangYinUtil { list = getStrList(title, b1 / 2); } String s0 = titleAddSpace(list.get(0), b1); - title = "" + s0 + otherStr + "
";// 添加 单价 数量 总额 + title = ""+s0 + otherStr + "
";// 添加 单价 数量 总额 String s = ""; for (int k = 1; k < list.size(); k++) { s += list.get(k); From 65ba4d0000953587094d8fde06cf211df928d258 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Fri, 6 Dec 2024 12:02:55 +0800 Subject: [PATCH 58/77] =?UTF-8?q?=E5=B0=8F=E7=A5=A8=E6=89=93=E5=8D=B0bug?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chaozhanggui/system/cashierservice/util/PrinterUtils.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java index dd49da3..73d2624 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java @@ -1,5 +1,6 @@ package com.chaozhanggui.system.cashierservice.util; +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -137,7 +138,8 @@ public class PrinterUtils { data.append("品名 数量 小计
"); data.append("--------------------------------
"); for (OrderDetailPO.Detail detail : detailPO.getDetailList()) { - String row = YunXiangYinUtil.getRow(detail.getProductName(), "", " " + detail.getNumber(), toPlainStr(detail.getAmount()), 20, 0, 4, 6); + String number = Convert.toBigDecimal(detail.getNumber()).setScale(0).toPlainString(); + String row = YunXiangYinUtil.getRow(detail.getProductName(), "", " " + number, toPlainStr(detail.getAmount()), 20, 0, 4, 6); data.append(row); if (StrUtil.isNotBlank(detail.getSpec())) { data.append("规格:").append(detail.getSpec()).append("
"); From 45e1aa246efaff5704b1306c5acbd598a5a41590 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, 6 Dec 2024 13:29:43 +0800 Subject: [PATCH 59/77] =?UTF-8?q?feat:=20=E4=BB=B7=E6=A0=BC=E8=B6=85?= =?UTF-8?q?=E8=BF=87=E4=B8=A4=E4=BD=8D=E5=90=91=E4=B8=8B=E8=88=8D=E5=8E=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/cashierservice/entity/TbCashierCart.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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 f05df71..8d778c6 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbCashierCart.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbCashierCart.java @@ -115,7 +115,7 @@ public class TbCashierCart implements Serializable { } else { subtract = salePrice.subtract(discountSaleAmount); } - totalAmount = totalNumber.multiply(subtract.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : subtract).add(packFee); + totalAmount = totalNumber.multiply(subtract.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : subtract).add(packFee).setScale(2, RoundingMode.DOWN); } } @@ -140,11 +140,11 @@ public class TbCashierCart implements Serializable { BigDecimal subtract; if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) { subtract = memberPrice.subtract(discountSaleAmount); - totalAmount = totalNumber.multiply(subtract).add(packFee).multiply(discountRadio).setScale(2, RoundingMode.HALF_UP); + totalAmount = totalNumber.multiply(subtract).add(packFee).multiply(discountRadio).setScale(2, RoundingMode.DOWN); } else { subtract = salePrice.subtract(discountSaleAmount); totalAmount = totalNumber.multiply(subtract) - .add(packFee).multiply(discountRadio).setScale(2, RoundingMode.HALF_UP); + .add(packFee).multiply(discountRadio).setScale(2, RoundingMode.DOWN); } } } @@ -165,9 +165,9 @@ public class TbCashierCart implements Serializable { } if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) { - return num.multiply(memberPrice).multiply(discountRadio).add(packFee).setScale(2, RoundingMode.HALF_UP); + return num.multiply(memberPrice).multiply(discountRadio).add(packFee).setScale(2, RoundingMode.DOWN); }else { - return num.multiply(discountSaleAmount != null ? discountSaleAmount : salePrice).add(packFee).multiply(discountRadio).setScale(2, RoundingMode.HALF_UP); + return num.multiply(discountSaleAmount != null ? discountSaleAmount : salePrice).add(packFee).multiply(discountRadio).setScale(2, RoundingMode.DOWN); } // if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) { // return num.multiply(memberPrice); From aca88711ea47619567c96a253fef7bcbaae7cc99 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, 6 Dec 2024 14:48:26 +0800 Subject: [PATCH 60/77] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=B4=AD?= =?UTF-8?q?=E7=89=A9=E8=BD=A6=E7=AE=80=E5=8C=96=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashierservice/service/OrderService.java | 162 ++++++++---------- 1 file changed, 74 insertions(+), 88 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 c33486f..bce6177 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -380,7 +380,6 @@ public class OrderService { } } - if (StringUtils.isEmpty(masterId)) { boolean flag = redisUtil.exists("SHOP:CODE:" + clientType + ":" + shopId); if (flag) { @@ -396,99 +395,86 @@ public class OrderService { } - if (Objects.nonNull(cart) && cart.getGroupType() != null && cart.getGroupType() == 0) { - //查询现有规格商品 - cart.setNumber(number); - cart.setIsGift(isGift); - cart.setIsPack(isPack); - cart.setTotalNumber(number); - cart.resetTotalAmount(); - cart.setUuid(uuid); - cart.setIsPrint(isPrint); + List list = cashierCartMapper.selectALlByMasterId(masterId, "create"); + + TbCashierCart cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO); + if (type.equals("add") || cashierCart == null || (cart != null && cart.getGroupType() != null && cart.getGroupType() == 1)) { + cashierCart = new TbCashierCart(); + cashierCart.setUseType(shopEatTypeInfoDTO.getUseType()); + if (product != null) { + cashierCart.setCoverImg(product.getCoverImg()); + cashierCart.setIsSku(product.getTypeEnum()); + cashierCart.setName(product.getName()); + cashierCart.setCategoryId(product.getCategoryId()); + cashierCart.setTypeEnum(product.getTypeEnum()); + cashierCart.setGroupType(product.getGroupType()); + } + cashierCart.setCreatedAt(System.currentTimeMillis()); + cashierCart.setMasterId(masterId); + cashierCart.setUuid(uuid); + cashierCart.setMerchantId(userId); + cashierCart.setProductId(productId == null ? null : productId.toString()); + if (skuWithBLOBs != null) { + cashierCart.setSalePrice(skuWithBLOBs.getSalePrice()); + cashierCart.setSkuId(skuWithBLOBs.getId().toString()); + cashierCart.setSkuName(skuWithBLOBs.getSpecSnap()); + cashierCart.setMemberPrice(skuWithBLOBs.getMemberPrice()); + cashierCart.setIsMember(0); + } + cashierCart.setIsPrint(isPrint); + cashierCart.setShopId(shopId.toString()); + cashierCart.setTradeDay(DateUtils.getDay()); + cashierCart.setStatus("create"); + cashierCart.setIsPack(isPack); + cashierCart.setIsGift(isGift); + if (isGift.equals("false")) { + if (isSeatCart) { + cashierCart.setTotalAmount(number.multiply(cashierCart.getSalePrice())); + } else { + cashierCart.setTotalAmount(number.multiply(skuWithBLOBs.getSalePrice())); + } + } else { + cashierCart.setTotalAmount(BigDecimal.ZERO); + } + if (isPack.equals("false")) { + cashierCart.setPackFee(BigDecimal.ZERO); + } else { + if (!isSeatCart) { + cashierCart.setPackFee(number.multiply(product == null ? BigDecimal.ZERO : product.getPackFee())); + } + cashierCart.setTotalAmount(cashierCart.getTotalAmount().add(cashierCart.getPackFee())); + + } + cashierCart.setTotalNumber(number); + cashierCart.setUserId(Integer.valueOf(userId)); + cashierCart.setNumber(number); + cashierCart.setUuid(uuid); + cashierCart.setTableId(tableId); + cashierCart.setPlatformType(OrderPlatformTypeEnum.CASH.getValue()); + if (product != null) { + resetGroupProductCart(groupProductIdList, product, cashierCart); + } + list.add(cashierCart); + mpCashierCartMapper.insert(cashierCart); + }else { + cashierCart.setNumber(number); + if (product != null) { + resetGroupProductCart(groupProductIdList, product, cashierCart); + } + cashierCart.setTotalNumber(number); + cashierCart.setIsPrint(isPrint); + cashierCart.setIsPack(isPack); + cashierCart.resetTotalAmount(); + cashierCart.setUuid(uuid); + cashierCart.setIsPrint(isPrint); + cashierCart.resetTotalAmount(); if (product != null) { resetGroupProductCart(groupProductIdList, product, cart); } - cashierCartMapper.updateByPrimaryKeySelective(cart); - } else { - List list = cashierCartMapper.selectALlByMasterId(masterId, "create"); - TbCashierCart cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO); - // 不存在新增 - if (Objects.isNull(cashierCart) || (cart != null && cart.getGroupType() != null && cart.getGroupType() == 1)) { - cashierCart = new TbCashierCart(); - cashierCart.setUseType(shopEatTypeInfoDTO.getUseType()); - if (product != null) { - cashierCart.setCoverImg(product.getCoverImg()); - cashierCart.setIsSku(product.getTypeEnum()); - cashierCart.setName(product.getName()); - cashierCart.setCategoryId(product.getCategoryId()); - cashierCart.setTypeEnum(product.getTypeEnum()); - cashierCart.setGroupType(product.getGroupType()); - } - cashierCart.setCreatedAt(System.currentTimeMillis()); - cashierCart.setMasterId(masterId); - cashierCart.setUuid(uuid); - cashierCart.setMerchantId(userId); - cashierCart.setProductId(productId == null ? null : productId.toString()); - if (skuWithBLOBs != null) { - cashierCart.setSalePrice(skuWithBLOBs.getSalePrice()); - cashierCart.setSkuId(skuWithBLOBs.getId().toString()); - cashierCart.setSkuName(skuWithBLOBs.getSpecSnap()); - cashierCart.setMemberPrice(skuWithBLOBs.getMemberPrice()); - cashierCart.setIsMember(0); - } - cashierCart.setIsPrint(isPrint); - cashierCart.setShopId(shopId.toString()); - cashierCart.setTradeDay(DateUtils.getDay()); - cashierCart.setStatus("create"); - cashierCart.setIsPack(isPack); - cashierCart.setIsGift(isGift); - if (isGift.equals("false")) { - if (isSeatCart) { - cashierCart.setTotalAmount(number.multiply(cashierCart.getSalePrice())); - } else { - cashierCart.setTotalAmount(number.multiply(skuWithBLOBs.getSalePrice())); - } - } else { - cashierCart.setTotalAmount(BigDecimal.ZERO); - } - if (isPack.equals("false")) { - cashierCart.setPackFee(BigDecimal.ZERO); - } else { - if (!isSeatCart) { - cashierCart.setPackFee(number.multiply(product == null ? BigDecimal.ZERO : product.getPackFee())); - } - cashierCart.setTotalAmount(cashierCart.getTotalAmount().add(cashierCart.getPackFee())); - } - cashierCart.setTotalNumber(number); - cashierCart.setUserId(Integer.valueOf(userId)); - cashierCart.setNumber(number); - cashierCart.setUuid(uuid); - cashierCart.setTableId(tableId); - cashierCart.setPlatformType(OrderPlatformTypeEnum.CASH.getValue()); - if (product != null) { - resetGroupProductCart(groupProductIdList, product, cashierCart); - } - list.add(cashierCart); - mpCashierCartMapper.insert(cashierCart); - } else { - if (type.equals("add")) { - cashierCart.setNumber(cashierCart.getNumber().add(number)); - } else { - cashierCart.setNumber(number); - } - if (product != null) { - resetGroupProductCart(groupProductIdList, product, cashierCart); - } - cashierCart.setIsPrint(isPrint); - cashierCart.resetTotalAmount(); - mpCashierCartMapper.updateById(cashierCart); - } - - cart = cashierCart; + mpCashierCartMapper.updateById(cashierCart); } - setRedisTableCartInfo(tableId, shopId, Collections.singletonList(cart), true); return Result.success(CodeEnum.SUCCESS, masterId); From 7514a8b3228cb95554dd1488c58e11378804aa84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Fri, 6 Dec 2024 14:48:58 +0800 Subject: [PATCH 61/77] =?UTF-8?q?=E5=B0=8F=E7=A5=A8=E6=89=93=E5=8D=B0bug?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/cashierservice/util/FeieyunPrintUtil.java | 7 +++---- .../system/cashierservice/util/PrinterUtils.java | 7 +++---- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java index fc941e2..5ebd8fe 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/FeieyunPrintUtil.java @@ -1,7 +1,6 @@ package com.chaozhanggui.system.cashierservice.util; -import cn.hutool.core.convert.Convert; import cn.hutool.core.text.UnicodeUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; @@ -237,13 +236,13 @@ public class FeieyunPrintUtil { data.append("--------------------------------
"); for (OrderDetailPO.Detail detail : detailPO.getDetailList()) { String productName = detail.getProductName(); - String number = Convert.toBigDecimal(detail.getNumber()).setScale(0).toPlainString(); + String number = detail.getNumber(); String amount = toPlainStr(detail.getAmount()); //58mm的机器,一行打印16个汉字,32个字母; 80mm的机器,一行打印24个汉字,48个字母 //展示4列 b1代表名称列占用(14个字节) b2单价列(6个字节) b3数量列(3个字节) b4金额列(6个字节)-->这里的字节数可按自己需求自由改写,14+6+3+6再加上代码写的3个空格就是32了,58mm打印机一行总占32字节 //String row = FeieYunUtil.getRow(productName, "",number, amount, 14, 6,3, 6) //展示3列 b1代表名称列占用(20个字节) b2单价列(0个字节) b3数量列(3个字节) b4金额列(6个字节)-->这里的字节数可按自己需求自由改写,20+0+3+6再加上代码写的3个空格就是32了,58mm打印机一行总占32字节 - String row = FeieYunUtil.getRow(productName, "", " "+number, amount, 20, 0, 4, 6); + String row = FeieYunUtil.getRow(productName, "", number, amount, 20, 0, 3, 6); data.append(row); if (StrUtil.isNotBlank(detail.getSpec())) { data.append("规格:" + detail.getSpec() + "
"); @@ -259,7 +258,7 @@ public class FeieyunPrintUtil { for (int i = 0; i < subItems.size(); i++) { String proName = subItems.getJSONObject(i).getStr("proName"); int qty = subItems.getJSONObject(i).getInt("number"); - String subRow = FeieYunUtil.getRow(" - "+proName, "", qty+"", "0.00", 20, 0, 4, 6); + String subRow = FeieYunUtil.getRow(" - "+proName, "", qty+".00", "0.00", 20, 0, 3, 6); data.append(subRow); } } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java index 73d2624..f0dd315 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java @@ -1,6 +1,5 @@ package com.chaozhanggui.system.cashierservice.util; -import cn.hutool.core.convert.Convert; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -138,8 +137,8 @@ public class PrinterUtils { data.append("品名 数量 小计
"); data.append("--------------------------------
"); for (OrderDetailPO.Detail detail : detailPO.getDetailList()) { - String number = Convert.toBigDecimal(detail.getNumber()).setScale(0).toPlainString(); - String row = YunXiangYinUtil.getRow(detail.getProductName(), "", " " + number, toPlainStr(detail.getAmount()), 20, 0, 4, 6); + String number = detail.getNumber(); + String row = YunXiangYinUtil.getRow(detail.getProductName(), "", number, toPlainStr(detail.getAmount()), 20, 0, 3, 6); data.append(row); if (StrUtil.isNotBlank(detail.getSpec())) { data.append("规格:").append(detail.getSpec()).append("
"); @@ -155,7 +154,7 @@ public class PrinterUtils { for (int i = 0; i < subItems.size(); i++) { String proName = subItems.getJSONObject(i).getStr("proName"); int qty = subItems.getJSONObject(i).getInt("number"); - String subRow = YunXiangYinUtil.getRow(" - "+proName, "", " "+qty, "0.00", 20, 0, 4, 6); + String subRow = YunXiangYinUtil.getRow(" - "+proName, "", qty+".00", "0.00", 20, 0, 3, 6); data.append(subRow); } } From f3da522e803eb6ede978d230f70cb9f453bdf9a1 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, 6 Dec 2024 14:58:48 +0800 Subject: [PATCH 62/77] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=B4=AD?= =?UTF-8?q?=E7=89=A9=E8=BD=A6=E7=AE=80=E5=8C=96=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 | 5 +++-- 1 file changed, 3 insertions(+), 2 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 bce6177..416c928 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -468,14 +468,15 @@ public class OrderService { cashierCart.setUuid(uuid); cashierCart.setIsPrint(isPrint); cashierCart.resetTotalAmount(); + cart = cashierCart; if (product != null) { - resetGroupProductCart(groupProductIdList, product, cart); + resetGroupProductCart(groupProductIdList, product, cashierCart); } mpCashierCartMapper.updateById(cashierCart); } - setRedisTableCartInfo(tableId, shopId, Collections.singletonList(cart), true); + setRedisTableCartInfo(tableId, shopId, Collections.singletonList(cashierCart), true); return Result.success(CodeEnum.SUCCESS, masterId); } From d6295f5d62240f825d613b3fcbf565b21e05eaf0 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, 6 Dec 2024 15:01:32 +0800 Subject: [PATCH 63/77] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=B4=AD?= =?UTF-8?q?=E7=89=A9=E8=BD=A6=E7=AE=80=E5=8C=96=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 | 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 416c928..fcc4cf9 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -398,7 +398,7 @@ public class OrderService { List list = cashierCartMapper.selectALlByMasterId(masterId, "create"); TbCashierCart cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO); - if (type.equals("add") || cashierCart == null || (cart != null && cart.getGroupType() != null && cart.getGroupType() == 1)) { + if (type.equals("edit") && cashierCart!= null) { cashierCart = new TbCashierCart(); cashierCart.setUseType(shopEatTypeInfoDTO.getUseType()); if (product != null) { From a002a624d6ef23a0b3b9ab62f18a9a08e8749daf 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, 6 Dec 2024 15:03:16 +0800 Subject: [PATCH 64/77] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=B4=AD?= =?UTF-8?q?=E7=89=A9=E8=BD=A6=E7=AE=80=E5=8C=96=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashierservice/service/OrderService.java | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 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 fcc4cf9..04810f2 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -399,6 +399,24 @@ public class OrderService { TbCashierCart cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO); if (type.equals("edit") && cashierCart!= null) { + cashierCart.setNumber(number); + if (product != null) { + resetGroupProductCart(groupProductIdList, product, cashierCart); + } + cashierCart.setTotalNumber(number); + cashierCart.setIsPrint(isPrint); + cashierCart.setIsPack(isPack); + cashierCart.resetTotalAmount(); + cashierCart.setUuid(uuid); + cashierCart.setIsPrint(isPrint); + cashierCart.resetTotalAmount(); + cart = cashierCart; + if (product != null) { + resetGroupProductCart(groupProductIdList, product, cashierCart); + } + + mpCashierCartMapper.updateById(cashierCart); + }else { cashierCart = new TbCashierCart(); cashierCart.setUseType(shopEatTypeInfoDTO.getUseType()); if (product != null) { @@ -456,24 +474,7 @@ public class OrderService { } list.add(cashierCart); mpCashierCartMapper.insert(cashierCart); - }else { - cashierCart.setNumber(number); - if (product != null) { - resetGroupProductCart(groupProductIdList, product, cashierCart); - } - cashierCart.setTotalNumber(number); - cashierCart.setIsPrint(isPrint); - cashierCart.setIsPack(isPack); - cashierCart.resetTotalAmount(); - cashierCart.setUuid(uuid); - cashierCart.setIsPrint(isPrint); - cashierCart.resetTotalAmount(); - cart = cashierCart; - if (product != null) { - resetGroupProductCart(groupProductIdList, product, cashierCart); - } - mpCashierCartMapper.updateById(cashierCart); } setRedisTableCartInfo(tableId, shopId, Collections.singletonList(cashierCart), true); From ac72a491b0febb8fef12f2a1834268b13fc45b25 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, 6 Dec 2024 15:06:14 +0800 Subject: [PATCH 65/77] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=B4=AD?= =?UTF-8?q?=E7=89=A9=E8=BD=A6=E7=AE=80=E5=8C=96=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 | 8 ++++++-- 1 file changed, 6 insertions(+), 2 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 04810f2..16d3ac7 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -397,7 +397,7 @@ public class OrderService { List list = cashierCartMapper.selectALlByMasterId(masterId, "create"); - TbCashierCart cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO); + TbCashierCart cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO, cartId); if (type.equals("edit") && cashierCart!= null) { cashierCart.setNumber(number); if (product != null) { @@ -482,7 +482,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) { + private TbCashierCart getCashierInfo(Object shopId, Object skuId, Object productId, String tableId, String MasterId, ShopEatTypeInfoDTO shopEatTypeInfoDTO, Integer cartId) { LambdaQueryWrapper query = new LambdaQueryWrapper() .eq(TbCashierCart::getShopId, shopId) .eq(TbCashierCart::getSkuId, skuId) @@ -490,6 +490,10 @@ public class OrderService { .in(TbCashierCart::getStatus, "create") .eq(TbCashierCart::getUseType, shopEatTypeInfoDTO.getUseType()); + if (cartId != null) { + query.eq(TbCashierCart::getId, cartId); + } + if (shopEatTypeInfoDTO.isDineInAfter()) { query.isNull(TbCashierCart::getPlaceNum); } From 1a5b2695d40a6730d4adf3e09f85320f73957eb4 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, 6 Dec 2024 15:19:00 +0800 Subject: [PATCH 66/77] =?UTF-8?q?feat:=20findOrder=E6=95=B0=E9=87=8F?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=BC=82=E5=B8=B8=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chaozhanggui/system/cashierservice/entity/po/SkuInfoPo.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/SkuInfoPo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/SkuInfoPo.java index 121c560..510ed1d 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/SkuInfoPo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/SkuInfoPo.java @@ -9,7 +9,7 @@ public class SkuInfoPo { private String productName; private String productSkuName; - private Integer num; + private BigDecimal num; private BigDecimal priceAmount; private BigDecimal packAmount; private String categoryId; From 293b1acd9eb216391822b428fa52d4d06d01497b 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, 6 Dec 2024 15:40:41 +0800 Subject: [PATCH 67/77] =?UTF-8?q?feat:=20findOrder=E6=95=B0=E9=87=8F?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=BC=82=E5=B8=B8=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashierservice/service/OrderService.java | 153 +++++++++--------- 1 file changed, 78 insertions(+), 75 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 16d3ac7..0964b74 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -308,12 +308,20 @@ public class OrderService { cartQuery.eq(TbCashierCart::getId, cartId); } - TbCashierCart cart = mpCashierCartMapper.selectOne(cartQuery); - - // 校验是否是代客下单往期订单 - if (shopEatTypeInfoDTO.isDineInAfter() && cart != null && cart.getPlaceNum() != null && !isSeatCart) { - return Result.fail("后付费已下单订单仅支持退款"); + if (StringUtils.isEmpty(masterId)) { + boolean flag = redisUtil.exists("SHOP:CODE:" + clientType + ":" + shopId); + if (flag) { + String code = redisUtil.getMessage("SHOP:CODE:" + clientType + ":" + shopId); + Integer foodCode = Integer.parseInt(code) + 1; + code = "#" + String.format("%03d", foodCode); + redisUtil.saveMessage("SHOP:CODE:" + clientType + ":" + shopId, foodCode.toString()); + masterId = code; + } else { + redisUtil.saveMessage("SHOP:CODE:" + clientType + ":" + shopId, "1"); + masterId = "#" + String.format("%03d", 1); + } } + TbProduct product = null; TbProductSkuWithBLOBs skuWithBLOBs = null; if (!isSeatCart && productId != null) { @@ -336,40 +344,6 @@ public class OrderService { return Result.fail(CodeEnum.PRODUCTSKUERROR); } - // 首次加入购物车,并且拥有起售数,设置为起售数 - if (cart == null && skuWithBLOBs.getSuit() != null && skuWithBLOBs.getSuit() != 0 && number.compareTo(BigDecimal.valueOf(skuWithBLOBs.getSuit())) < 0) { - number = BigDecimal.valueOf(skuWithBLOBs.getSuit()); - // 低于起售,删除商品 - } else if (cart != null && skuWithBLOBs.getSuit() != null && skuWithBLOBs.getSuit() != 0 && number.compareTo(BigDecimal.valueOf(skuWithBLOBs.getSuit())) < 0) { - delCart(masterId, cartId); - if (cart.getOrderId() != null && StrUtil.isNotBlank(cart.getTableId())) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() - .notIn(TbCashierCart::getStatus, "final", "refund", "closed", "pending") - .eq(TbCashierCart::getShopId, cart.getShopId()); - - TbCashierCart finalCart = cart; - queryWrapper.eq(TbCashierCart::getTableId, cart.getTableId()) - .and(q -> q.or( - query -> query.eq(TbCashierCart::getMasterId, finalCart.getMasterId()) - .or() - .isNull(TbCashierCart::getMasterId) - .or() - .eq(TbCashierCart::getMasterId, "") - ) - .or(query -> query.eq(TbCashierCart::getOrderId, finalCart.getOrderId()) - .or() - .isNull(TbCashierCart::getOrderId))); - - List list = mpCashierCartMapper.selectList(queryWrapper.eq(TbCashierCart::getStatus, "create")); - - if (list.isEmpty()) { - tbOrderInfoMapper.deleteByPrimaryKey(Integer.valueOf(cart.getOrderId())); - } - } - - setRedisTableCartInfo(tableId, shopId, Collections.singletonList(cart), false); - return Result.success(CodeEnum.SUCCESS, masterId); - } // 校验库存 if ("1".equals(product.getIsStock().toString())) { @@ -379,44 +353,71 @@ public class OrderService { } } } + boolean needNew = false; + List list = cashierCartMapper.selectALlByMasterId(masterId, "create"); + TbCashierCart cashierCart = null; + if (type.equals("edit") ) { + cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO, cartId); + if (cashierCart == null) { + needNew = true; + }else { + // 校验是否是代客下单往期订单 + if (shopEatTypeInfoDTO.isDineInAfter() && cashierCart.getPlaceNum() != null && !isSeatCart) { + return Result.fail("后付费已下单订单仅支持退款"); + } - if (StringUtils.isEmpty(masterId)) { - boolean flag = redisUtil.exists("SHOP:CODE:" + clientType + ":" + shopId); - if (flag) { - String code = redisUtil.getMessage("SHOP:CODE:" + clientType + ":" + shopId); - Integer foodCode = Integer.parseInt(code) + 1; - code = "#" + String.format("%03d", foodCode); - redisUtil.saveMessage("SHOP:CODE:" + clientType + ":" + shopId, foodCode.toString()); - masterId = code; - } else { - redisUtil.saveMessage("SHOP:CODE:" + clientType + ":" + shopId, "1"); - masterId = "#" + String.format("%03d", 1); + if (skuWithBLOBs != null && skuWithBLOBs.getSuit() != null && skuWithBLOBs.getSuit() != 0 && number.compareTo(BigDecimal.valueOf(skuWithBLOBs.getSuit())) < 0) { + delCart(masterId, cartId); + if (cashierCart.getOrderId() != null && StrUtil.isNotBlank(cashierCart.getTableId())) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .notIn(TbCashierCart::getStatus, "final", "refund", "closed", "pending") + .eq(TbCashierCart::getShopId, cashierCart.getShopId()); + + TbCashierCart finalCart = cashierCart; + queryWrapper.eq(TbCashierCart::getTableId, cashierCart.getTableId()) + .and(q -> q.or( + query -> query.eq(TbCashierCart::getMasterId, finalCart.getMasterId()) + .or() + .isNull(TbCashierCart::getMasterId) + .or() + .eq(TbCashierCart::getMasterId, "") + ) + .or(query -> query.eq(TbCashierCart::getOrderId, finalCart.getOrderId()) + .or() + .isNull(TbCashierCart::getOrderId))); + + List list1 = mpCashierCartMapper.selectList(queryWrapper.eq(TbCashierCart::getStatus, "create")); + + if (list1.isEmpty()) { + tbOrderInfoMapper.deleteByPrimaryKey(cashierCart.getOrderId()); + } + } + + setRedisTableCartInfo(tableId, shopId, Collections.singletonList(cashierCart), false); + return Result.success(CodeEnum.SUCCESS, masterId); + } + + cashierCart.setNumber(number); + if (product != null) { + resetGroupProductCart(groupProductIdList, product, cashierCart); + } + cashierCart.setTotalNumber(number); + cashierCart.setIsPrint(isPrint); + cashierCart.setIsPack(isPack); + cashierCart.resetTotalAmount(); + cashierCart.setUuid(uuid); + cashierCart.setIsPrint(isPrint); + cashierCart.resetTotalAmount(); + if (product != null) { + resetGroupProductCart(groupProductIdList, product, cashierCart); + } + + mpCashierCartMapper.updateById(cashierCart); } + } - - List list = cashierCartMapper.selectALlByMasterId(masterId, "create"); - - TbCashierCart cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO, cartId); - if (type.equals("edit") && cashierCart!= null) { - cashierCart.setNumber(number); - if (product != null) { - resetGroupProductCart(groupProductIdList, product, cashierCart); - } - cashierCart.setTotalNumber(number); - cashierCart.setIsPrint(isPrint); - cashierCart.setIsPack(isPack); - cashierCart.resetTotalAmount(); - cashierCart.setUuid(uuid); - cashierCart.setIsPrint(isPrint); - cashierCart.resetTotalAmount(); - cart = cashierCart; - if (product != null) { - resetGroupProductCart(groupProductIdList, product, cashierCart); - } - - mpCashierCartMapper.updateById(cashierCart); - }else { + if (type.equals("add") || needNew){ cashierCart = new TbCashierCart(); cashierCart.setUseType(shopEatTypeInfoDTO.getUseType()); if (product != null) { @@ -461,11 +462,13 @@ public class OrderService { cashierCart.setPackFee(number.multiply(product == null ? BigDecimal.ZERO : product.getPackFee())); } cashierCart.setTotalAmount(cashierCart.getTotalAmount().add(cashierCart.getPackFee())); - + } + if (skuWithBLOBs != null && skuWithBLOBs.getSuit() != null && skuWithBLOBs.getSuit() != 0 && number.compareTo(BigDecimal.valueOf(skuWithBLOBs.getSuit())) < 0) { + number = BigDecimal.valueOf(skuWithBLOBs.getSuit()); } cashierCart.setTotalNumber(number); - cashierCart.setUserId(Integer.valueOf(userId)); cashierCart.setNumber(number); + cashierCart.setUserId(Integer.valueOf(userId)); cashierCart.setUuid(uuid); cashierCart.setTableId(tableId); cashierCart.setPlatformType(OrderPlatformTypeEnum.CASH.getValue()); From 8fa00c9c4833b91608f37dcfe7aedf7adad7a9cb 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, 6 Dec 2024 15:45:22 +0800 Subject: [PATCH 68/77] =?UTF-8?q?feat:=20findOrder=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E6=94=B9=E4=BB=B7=E5=90=8E=E7=9A=84=E4=BB=B7?= =?UTF-8?q?=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/cashierservice/entity/po/SkuInfoPo.java | 1 + .../system/cashierservice/service/OrderService.java | 10 ++++++++++ src/main/resources/mapper/TbOrderInfoMapper.xml | 2 ++ 3 files changed, 13 insertions(+) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/SkuInfoPo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/SkuInfoPo.java index 510ed1d..60228be 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/SkuInfoPo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/SkuInfoPo.java @@ -11,6 +11,7 @@ public class SkuInfoPo { private String productSkuName; private BigDecimal num; private BigDecimal priceAmount; + private BigDecimal discountAmount; private BigDecimal packAmount; private String categoryId; private BigDecimal price; 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 0964b74..37ff75c 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -1519,12 +1519,22 @@ public class OrderService { if (Objects.isNull(skuInfoPos) || skuInfoPos.size() < 0) { skuInfoPos = new ArrayList<>(); } + skuInfoPos.forEach(item -> { + if (item.getDiscountAmount() != null) { + item.setPriceAmount(item.getPriceAmount().subtract(item.getDiscountAmount())); + } + }); orderInfo.setSkuInfos(skuInfoPos); } else { List skuInfoPos = tbOrderInfoMapper.selectSkuByOrderId(orderInfo.getId().toString()); if (Objects.isNull(skuInfoPos) || skuInfoPos.size() < 0) { skuInfoPos = new ArrayList<>(); } + skuInfoPos.forEach(item -> { + if (item.getDiscountAmount() != null) { + item.setPriceAmount(item.getPriceAmount().subtract(item.getDiscountAmount())); + } + }); orderInfo.setSkuInfos(skuInfoPos); } diff --git a/src/main/resources/mapper/TbOrderInfoMapper.xml b/src/main/resources/mapper/TbOrderInfoMapper.xml index 0c19221..ed54032 100644 --- a/src/main/resources/mapper/TbOrderInfoMapper.xml +++ b/src/main/resources/mapper/TbOrderInfoMapper.xml @@ -611,6 +611,7 @@ select * from tb_order_info where trade_day = #{day} and table_id = #{masterId} d.product_sku_name AS productSkuName, c.category_id AS categoryId, d.price_amount as priceAmount, + d.discount_amount as discountAmount, d.pack_amount as packAmount, d.price as price, d.pro_group_info as proGroupInfo @@ -632,6 +633,7 @@ select * from tb_order_info where trade_day = #{day} and table_id = #{masterId} d.product_sku_name AS productSkuName, '' AS categoryId, d.price_amount as priceAmount, + d.discount_amount as discountAmount, d.pack_amount as packAmount, d.price as price, d.pro_group_info as proGroupInfo From 2f0b80a8dbefc701e1f18f6a8887bba2eb8b8f52 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, 6 Dec 2024 15:49:43 +0800 Subject: [PATCH 69/77] =?UTF-8?q?feat:=20findOrder=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E6=94=B9=E4=BB=B7=E5=90=8E=E7=9A=84=E4=BB=B7?= =?UTF-8?q?=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/cashierservice/entity/po/SkuInfoPo.java | 1 + .../system/cashierservice/service/OrderService.java | 10 ++++++++-- src/main/resources/mapper/TbOrderInfoMapper.xml | 3 +++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/SkuInfoPo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/SkuInfoPo.java index 60228be..5e52d8f 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/SkuInfoPo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/SkuInfoPo.java @@ -15,5 +15,6 @@ public class SkuInfoPo { private BigDecimal packAmount; private String categoryId; private BigDecimal price; + private BigDecimal memberPrice; private String proGroupInfo; } 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 37ff75c..61843f3 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -1521,7 +1521,10 @@ public class OrderService { } skuInfoPos.forEach(item -> { if (item.getDiscountAmount() != null) { - item.setPriceAmount(item.getPriceAmount().subtract(item.getDiscountAmount())); + item.setPrice(item.getPrice().subtract(item.getDiscountAmount())); + if (item.getMemberPrice() != null) { + item.setMemberPrice(item.getMemberPrice().subtract(item.getDiscountAmount())); + } } }); orderInfo.setSkuInfos(skuInfoPos); @@ -1532,7 +1535,10 @@ public class OrderService { } skuInfoPos.forEach(item -> { if (item.getDiscountAmount() != null) { - item.setPriceAmount(item.getPriceAmount().subtract(item.getDiscountAmount())); + item.setPrice(item.getPrice().subtract(item.getDiscountAmount())); + if (item.getMemberPrice() != null) { + item.setMemberPrice(item.getMemberPrice().subtract(item.getDiscountAmount())); + } } }); orderInfo.setSkuInfos(skuInfoPos); diff --git a/src/main/resources/mapper/TbOrderInfoMapper.xml b/src/main/resources/mapper/TbOrderInfoMapper.xml index ed54032..73b64b9 100644 --- a/src/main/resources/mapper/TbOrderInfoMapper.xml +++ b/src/main/resources/mapper/TbOrderInfoMapper.xml @@ -614,6 +614,8 @@ select * from tb_order_info where trade_day = #{day} and table_id = #{masterId} d.discount_amount as discountAmount, d.pack_amount as packAmount, d.price as price, + d.member_price as memberPrice, + d.pro_group_info as proGroupInfo FROM tb_order_detail d @@ -636,6 +638,7 @@ select * from tb_order_info where trade_day = #{day} and table_id = #{masterId} d.discount_amount as discountAmount, d.pack_amount as packAmount, d.price as price, + d.member_price as memberPrice, d.pro_group_info as proGroupInfo FROM tb_order_detail d From 8332589647acef4deec0b108361deb54a539b504 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, 6 Dec 2024 15:52:57 +0800 Subject: [PATCH 70/77] =?UTF-8?q?feat:=20findOrder=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E6=94=B9=E4=BB=B7=E5=90=8E=E7=9A=84=E4=BB=B7?= =?UTF-8?q?=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/cashierservice/entity/po/SkuInfoPo.java | 2 +- .../system/cashierservice/service/OrderService.java | 12 ++++++------ src/main/resources/mapper/TbOrderInfoMapper.xml | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/SkuInfoPo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/SkuInfoPo.java index 5e52d8f..f3feab0 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/SkuInfoPo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/po/SkuInfoPo.java @@ -11,7 +11,7 @@ public class SkuInfoPo { private String productSkuName; private BigDecimal num; private BigDecimal priceAmount; - private BigDecimal discountAmount; + private BigDecimal discountSaleAmount; private BigDecimal packAmount; private String categoryId; private BigDecimal price; 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 61843f3..84262a2 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -1520,10 +1520,10 @@ public class OrderService { skuInfoPos = new ArrayList<>(); } skuInfoPos.forEach(item -> { - if (item.getDiscountAmount() != null) { - item.setPrice(item.getPrice().subtract(item.getDiscountAmount())); + if (item.getDiscountSaleAmount() != null) { + item.setPrice(item.getPrice().subtract(item.getDiscountSaleAmount())); if (item.getMemberPrice() != null) { - item.setMemberPrice(item.getMemberPrice().subtract(item.getDiscountAmount())); + item.setMemberPrice(item.getMemberPrice().subtract(item.getDiscountSaleAmount())); } } }); @@ -1534,10 +1534,10 @@ public class OrderService { skuInfoPos = new ArrayList<>(); } skuInfoPos.forEach(item -> { - if (item.getDiscountAmount() != null) { - item.setPrice(item.getPrice().subtract(item.getDiscountAmount())); + if (item.getDiscountSaleAmount() != null) { + item.setPrice(item.getPrice().subtract(item.getDiscountSaleAmount())); if (item.getMemberPrice() != null) { - item.setMemberPrice(item.getMemberPrice().subtract(item.getDiscountAmount())); + item.setMemberPrice(item.getMemberPrice().subtract(item.getDiscountSaleAmount())); } } }); diff --git a/src/main/resources/mapper/TbOrderInfoMapper.xml b/src/main/resources/mapper/TbOrderInfoMapper.xml index 73b64b9..035d19b 100644 --- a/src/main/resources/mapper/TbOrderInfoMapper.xml +++ b/src/main/resources/mapper/TbOrderInfoMapper.xml @@ -611,7 +611,7 @@ select * from tb_order_info where trade_day = #{day} and table_id = #{masterId} d.product_sku_name AS productSkuName, c.category_id AS categoryId, d.price_amount as priceAmount, - d.discount_amount as discountAmount, + d.discount_sale_amount as discountSaleAmount, d.pack_amount as packAmount, d.price as price, d.member_price as memberPrice, @@ -635,7 +635,7 @@ select * from tb_order_info where trade_day = #{day} and table_id = #{masterId} d.product_sku_name AS productSkuName, '' AS categoryId, d.price_amount as priceAmount, - d.discount_amount as discountAmount, + d.discount_sale_amount as discountSaleAmount, d.pack_amount as packAmount, d.price as price, d.member_price as memberPrice, From 60d3fd0360ee560594a147ad1bc677b70187d83c 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, 6 Dec 2024 16:16:43 +0800 Subject: [PATCH 71/77] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=B4=AD?= =?UTF-8?q?=E7=89=A9=E8=BD=A6=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashierservice/service/OrderService.java | 184 ++++++++++++------ 1 file changed, 122 insertions(+), 62 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 84262a2..61e382b 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -246,7 +246,7 @@ public class OrderService { cashierCart.setProGroupInfo(JSONObject.toJSONString(foods)); } - }else if (isFixGroup) { + } else if (isFixGroup) { String groupSnap = product.getGroupSnap(); if (StrUtil.isNotBlank(groupSnap)) { ArrayList foods = new ArrayList<>(); @@ -266,6 +266,7 @@ public class OrderService { } } + @Transactional(rollbackFor = Exception.class) public Result createCart(String masterId, Integer productId, Integer shopId, Integer skuId, BigDecimal number, String userId, String clientType, Integer cartId, String isGift, String isPack, String uuid, @@ -291,7 +292,6 @@ public class OrderService { } } - String finalMasterId = masterId; LambdaQueryWrapper cartQuery = new LambdaQueryWrapper() .eq(TbCashierCart::getShopId, shopId) @@ -304,7 +304,7 @@ public class OrderService { .eq(TbCashierCart::getSkuId, skuId); } - if (cartId != null) { + if (cartId != null) { cartQuery.eq(TbCashierCart::getId, cartId); } @@ -354,13 +354,15 @@ public class OrderService { } } boolean needNew = false; + boolean isGroup = false; List list = cashierCartMapper.selectALlByMasterId(masterId, "create"); TbCashierCart cashierCart = null; - if (type.equals("edit") ) { + if (type.equals("edit")) { cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO, cartId); - if (cashierCart == null) { + isGroup = cashierCart != null && cashierCart.getGroupType() != null && cashierCart.getGroupType() == 1; + if (cashierCart == null || isGroup) { needNew = true; - }else { + } else { // 校验是否是代客下单往期订单 if (shopEatTypeInfoDTO.isDineInAfter() && cashierCart.getPlaceNum() != null && !isSeatCart) { return Result.fail("后付费已下单订单仅支持退款"); @@ -417,66 +419,123 @@ public class OrderService { } - if (type.equals("add") || needNew){ - cashierCart = new TbCashierCart(); - cashierCart.setUseType(shopEatTypeInfoDTO.getUseType()); - if (product != null) { - cashierCart.setCoverImg(product.getCoverImg()); - cashierCart.setIsSku(product.getTypeEnum()); - cashierCart.setName(product.getName()); - cashierCart.setCategoryId(product.getCategoryId()); - cashierCart.setTypeEnum(product.getTypeEnum()); - cashierCart.setGroupType(product.getGroupType()); - } - cashierCart.setCreatedAt(System.currentTimeMillis()); - cashierCart.setMasterId(masterId); - cashierCart.setUuid(uuid); - cashierCart.setMerchantId(userId); - cashierCart.setProductId(productId == null ? null : productId.toString()); - if (skuWithBLOBs != null) { - cashierCart.setSalePrice(skuWithBLOBs.getSalePrice()); - cashierCart.setSkuId(skuWithBLOBs.getId().toString()); - cashierCart.setSkuName(skuWithBLOBs.getSpecSnap()); - cashierCart.setMemberPrice(skuWithBLOBs.getMemberPrice()); - cashierCart.setIsMember(0); - } - cashierCart.setIsPrint(isPrint); - cashierCart.setShopId(shopId.toString()); - cashierCart.setTradeDay(DateUtils.getDay()); - cashierCart.setStatus("create"); - cashierCart.setIsPack(isPack); - cashierCart.setIsGift(isGift); - if (isGift.equals("false")) { - if (isSeatCart) { - cashierCart.setTotalAmount(number.multiply(cashierCart.getSalePrice())); + if (type.equals("add") || needNew) { + cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO, cartId); + if (cashierCart != null && !isGroup) { +// 校验是否是代客下单往期订单 + if (shopEatTypeInfoDTO.isDineInAfter() && cashierCart.getPlaceNum() != null && !isSeatCart) { + return Result.fail("后付费已下单订单仅支持退款"); + } + + if (skuWithBLOBs != null && skuWithBLOBs.getSuit() != null && skuWithBLOBs.getSuit() != 0 && number.compareTo(BigDecimal.valueOf(skuWithBLOBs.getSuit())) < 0) { + delCart(masterId, cartId); + if (cashierCart.getOrderId() != null && StrUtil.isNotBlank(cashierCart.getTableId())) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .notIn(TbCashierCart::getStatus, "final", "refund", "closed", "pending") + .eq(TbCashierCart::getShopId, cashierCart.getShopId()); + + TbCashierCart finalCart = cashierCart; + queryWrapper.eq(TbCashierCart::getTableId, cashierCart.getTableId()) + .and(q -> q.or( + query -> query.eq(TbCashierCart::getMasterId, finalCart.getMasterId()) + .or() + .isNull(TbCashierCart::getMasterId) + .or() + .eq(TbCashierCart::getMasterId, "") + ) + .or(query -> query.eq(TbCashierCart::getOrderId, finalCart.getOrderId()) + .or() + .isNull(TbCashierCart::getOrderId))); + + List list1 = mpCashierCartMapper.selectList(queryWrapper.eq(TbCashierCart::getStatus, "create")); + + if (list1.isEmpty()) { + tbOrderInfoMapper.deleteByPrimaryKey(cashierCart.getOrderId()); + } + } + + setRedisTableCartInfo(tableId, shopId, Collections.singletonList(cashierCart), false); + return Result.success(CodeEnum.SUCCESS, masterId); + } + + cashierCart.setNumber(number); + if (product != null) { + resetGroupProductCart(groupProductIdList, product, cashierCart); + } + cashierCart.setTotalNumber(number); + cashierCart.setIsPrint(isPrint); + cashierCart.setIsPack(isPack); + cashierCart.resetTotalAmount(); + cashierCart.setUuid(uuid); + cashierCart.setIsPrint(isPrint); + cashierCart.resetTotalAmount(); + if (product != null) { + resetGroupProductCart(groupProductIdList, product, cashierCart); + } + + mpCashierCartMapper.updateById(cashierCart); + } else { + + cashierCart = new TbCashierCart(); + cashierCart.setUseType(shopEatTypeInfoDTO.getUseType()); + if (product != null) { + cashierCart.setCoverImg(product.getCoverImg()); + cashierCart.setIsSku(product.getTypeEnum()); + cashierCart.setName(product.getName()); + cashierCart.setCategoryId(product.getCategoryId()); + cashierCart.setTypeEnum(product.getTypeEnum()); + cashierCart.setGroupType(product.getGroupType()); + } + cashierCart.setCreatedAt(System.currentTimeMillis()); + cashierCart.setMasterId(masterId); + cashierCart.setUuid(uuid); + cashierCart.setMerchantId(userId); + cashierCart.setProductId(productId == null ? null : productId.toString()); + if (skuWithBLOBs != null) { + cashierCart.setSalePrice(skuWithBLOBs.getSalePrice()); + cashierCart.setSkuId(skuWithBLOBs.getId().toString()); + cashierCart.setSkuName(skuWithBLOBs.getSpecSnap()); + cashierCart.setMemberPrice(skuWithBLOBs.getMemberPrice()); + cashierCart.setIsMember(0); + } + cashierCart.setIsPrint(isPrint); + cashierCart.setShopId(shopId.toString()); + cashierCart.setTradeDay(DateUtils.getDay()); + cashierCart.setStatus("create"); + cashierCart.setIsPack(isPack); + cashierCart.setIsGift(isGift); + if (isGift.equals("false")) { + if (isSeatCart) { + cashierCart.setTotalAmount(number.multiply(cashierCart.getSalePrice())); + } else { + cashierCart.setTotalAmount(number.multiply(skuWithBLOBs.getSalePrice())); + } } else { - cashierCart.setTotalAmount(number.multiply(skuWithBLOBs.getSalePrice())); + cashierCart.setTotalAmount(BigDecimal.ZERO); } - } else { - cashierCart.setTotalAmount(BigDecimal.ZERO); - } - if (isPack.equals("false")) { - cashierCart.setPackFee(BigDecimal.ZERO); - } else { - if (!isSeatCart) { - cashierCart.setPackFee(number.multiply(product == null ? BigDecimal.ZERO : product.getPackFee())); + if (isPack.equals("false")) { + cashierCart.setPackFee(BigDecimal.ZERO); + } else { + if (!isSeatCart) { + cashierCart.setPackFee(number.multiply(product == null ? BigDecimal.ZERO : product.getPackFee())); + } + cashierCart.setTotalAmount(cashierCart.getTotalAmount().add(cashierCart.getPackFee())); } - cashierCart.setTotalAmount(cashierCart.getTotalAmount().add(cashierCart.getPackFee())); + if (skuWithBLOBs != null && skuWithBLOBs.getSuit() != null && skuWithBLOBs.getSuit() != 0 && number.compareTo(BigDecimal.valueOf(skuWithBLOBs.getSuit())) < 0) { + number = BigDecimal.valueOf(skuWithBLOBs.getSuit()); + } + cashierCart.setTotalNumber(number); + cashierCart.setNumber(number); + cashierCart.setUserId(Integer.valueOf(userId)); + cashierCart.setUuid(uuid); + cashierCart.setTableId(tableId); + cashierCart.setPlatformType(OrderPlatformTypeEnum.CASH.getValue()); + if (product != null) { + resetGroupProductCart(groupProductIdList, product, cashierCart); + } + list.add(cashierCart); + mpCashierCartMapper.insert(cashierCart); } - if (skuWithBLOBs != null && skuWithBLOBs.getSuit() != null && skuWithBLOBs.getSuit() != 0 && number.compareTo(BigDecimal.valueOf(skuWithBLOBs.getSuit())) < 0) { - number = BigDecimal.valueOf(skuWithBLOBs.getSuit()); - } - cashierCart.setTotalNumber(number); - cashierCart.setNumber(number); - cashierCart.setUserId(Integer.valueOf(userId)); - cashierCart.setUuid(uuid); - cashierCart.setTableId(tableId); - cashierCart.setPlatformType(OrderPlatformTypeEnum.CASH.getValue()); - if (product != null) { - resetGroupProductCart(groupProductIdList, product, cashierCart); - } - list.add(cashierCart); - mpCashierCartMapper.insert(cashierCart); } @@ -1185,6 +1244,7 @@ public class OrderService { return Result.success(CodeEnum.SUCCESS, orderInfo); } + private void updateOrderDetailCanReturn(List orderDetailList, TbOrderInfo orderInfo) { orderDetailList = orderDetailList.stream().filter(item -> TableConstant.OrderInfo.Status.UNPAID.equalsVals(item.getStatus())).collect(Collectors.toList()); BigDecimal totalAmount = BigDecimal.ZERO; From 9cc0643763a63c37a6f89e9b019f6e0d85f2a7ee 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, 6 Dec 2024 16:19:48 +0800 Subject: [PATCH 72/77] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=B4=AD?= =?UTF-8?q?=E7=89=A9=E8=BD=A6=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 | 3 ++- 1 file changed, 2 insertions(+), 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 61e382b..7d7e753 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -422,7 +422,7 @@ public class OrderService { if (type.equals("add") || needNew) { cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO, cartId); if (cashierCart != null && !isGroup) { -// 校验是否是代客下单往期订单 + // 校验是否是代客下单往期订单 if (shopEatTypeInfoDTO.isDineInAfter() && cashierCart.getPlaceNum() != null && !isSeatCart) { return Result.fail("后付费已下单订单仅支持退款"); } @@ -458,6 +458,7 @@ public class OrderService { return Result.success(CodeEnum.SUCCESS, masterId); } + number = cashierCart.getNumber().add(number); cashierCart.setNumber(number); if (product != null) { resetGroupProductCart(groupProductIdList, product, cashierCart); From 4944bd1e8a0e456050f03ed7ee0feae3e05f0cf9 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, 6 Dec 2024 16:23:09 +0800 Subject: [PATCH 73/77] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=B4=AD?= =?UTF-8?q?=E7=89=A9=E8=BD=A6=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 7d7e753..d975a59 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -421,6 +421,7 @@ public class OrderService { if (type.equals("add") || needNew) { cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO, cartId); + isGroup = cashierCart != null && cashierCart.getGroupType() != null && cashierCart.getGroupType() == 1; if (cashierCart != null && !isGroup) { // 校验是否是代客下单往期订单 if (shopEatTypeInfoDTO.isDineInAfter() && cashierCart.getPlaceNum() != null && !isSeatCart) { From 91f63dfd9d1b9df493f6ed642e48f09d57e1b0fb 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, 6 Dec 2024 16:26:44 +0800 Subject: [PATCH 74/77] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=B4=AD?= =?UTF-8?q?=E7=89=A9=E8=BD=A6=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 | 6 ++++-- 1 file changed, 4 insertions(+), 2 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 d975a59..24bd3e9 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -420,8 +420,10 @@ public class OrderService { } if (type.equals("add") || needNew) { - cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO, cartId); - isGroup = cashierCart != null && cashierCart.getGroupType() != null && cashierCart.getGroupType() == 1; + if (product == null || product.getGroupType() == null || product.getGroupType() != 1) { + cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO, cartId); + } + if (cashierCart != null && !isGroup) { // 校验是否是代客下单往期订单 if (shopEatTypeInfoDTO.isDineInAfter() && cashierCart.getPlaceNum() != null && !isSeatCart) { From 3fe4fc8a515f11f3fa8ca93b05833bc188113f04 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, 6 Dec 2024 16:28:40 +0800 Subject: [PATCH 75/77] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=B4=AD?= =?UTF-8?q?=E7=89=A9=E8=BD=A6=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 | 6 ++---- 1 file changed, 2 insertions(+), 4 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 24bd3e9..949e60c 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -354,13 +354,11 @@ public class OrderService { } } boolean needNew = false; - boolean isGroup = false; List list = cashierCartMapper.selectALlByMasterId(masterId, "create"); TbCashierCart cashierCart = null; if (type.equals("edit")) { cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO, cartId); - isGroup = cashierCart != null && cashierCart.getGroupType() != null && cashierCart.getGroupType() == 1; - if (cashierCart == null || isGroup) { + if (cashierCart == null) { needNew = true; } else { // 校验是否是代客下单往期订单 @@ -424,7 +422,7 @@ public class OrderService { cashierCart = getCashierInfo(shopId, skuId, productId, tableId, masterId, shopEatTypeInfoDTO, cartId); } - if (cashierCart != null && !isGroup) { + if (cashierCart != null) { // 校验是否是代客下单往期订单 if (shopEatTypeInfoDTO.isDineInAfter() && cashierCart.getPlaceNum() != null && !isSeatCart) { return Result.fail("后付费已下单订单仅支持退款"); From a9f69aacc2496486989fbb054618002453a12f9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=87=AF=E5=87=AF?= Date: Fri, 6 Dec 2024 18:21:06 +0800 Subject: [PATCH 76/77] =?UTF-8?q?=E5=B0=8F=E7=A5=A8=E6=89=93=E5=8D=B0bug?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rabbit/PrintMechineConsumer.java | 91 ++++++++++--------- .../rabbit/print/PrinterHandler.java | 21 +++-- .../service/CloudPrinterService.java | 84 ++++++++--------- 3 files changed, 94 insertions(+), 102 deletions(-) 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 c87b580..f8f77b0 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/rabbit/PrintMechineConsumer.java @@ -169,26 +169,28 @@ public class PrintMechineConsumer { List detailList = new ArrayList<>(); tbOrderDetails.parallelStream().forEach(it -> { String categoryId = tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId(); - + String classifyPrint = tbPrintMachineWithBLOBs.getClassifyPrint(); Long count = categoryInfos.stream().filter(c -> c.getId().toString().equals(categoryId) ).count(); log.info("获取当前类别是否未打印类别:{}", count); + // 如果是部分打印,并且所属分类不在设置的列表中,则不打印 + if ("1".equals(classifyPrint) && count == 0) { - - TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getProductSkuId())); - String remark = ""; - if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { - remark = tbProductSkuWithBLOBs.getSpecSnap(); + } else { + TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getProductSkuId())); + String remark = ""; + if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { + remark = tbProductSkuWithBLOBs.getSpecSnap(); + } + BigDecimal unitPrice = it.getPrice(); + if (it.getIsMember() == 1) { + unitPrice = it.getMemberPrice(); + } + 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); } - BigDecimal unitPrice = it.getPrice(); - if(it.getIsMember() == 1){ - unitPrice = it.getMemberPrice(); - } - 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); - }); String balance = "0"; @@ -223,20 +225,22 @@ public class PrintMechineConsumer { List detailList = new ArrayList<>(); tbOrderDetails.stream().forEach(it -> { String categoryId = tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId(); - + String classifyPrint = tbPrintMachineWithBLOBs.getClassifyPrint(); Long count = categoryInfos.stream().filter(c -> c.getId().toString().equals(categoryId) ).count(); log.info("获取当前类别是否未打印类别:{}", count); + // 如果是部分打印,并且所属分类不在设置的列表中,则不打印 + if ("1".equals(classifyPrint) && count == 0) { - if (count > 0) { + } else { TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getProductSkuId())); String remark = ""; if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } BigDecimal unitPrice = it.getPrice(); - if(it.getIsMember() == 1){ + if (it.getIsMember() == 1) { unitPrice = it.getMemberPrice(); } BigDecimal subTotal = NumberUtil.mul(it.getNum(), unitPrice.subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); @@ -301,7 +305,7 @@ public class PrintMechineConsumer { log.info("开始打印一菜一品票据,:{}", it.getProductName()); long count; Integer isWaitCall = ObjectUtil.defaultIfNull(it.getIsWaitCall(), 0); - if(isWaitCall == 1) { + if (isWaitCall == 1) { it.setProductName("【等叫】" + it.getProductName()); } if (it.getIsTemporary() == 1) { @@ -344,7 +348,7 @@ public class PrintMechineConsumer { log.info("已打印数量, {}, 未打印数量: {}", info, printerNum); String remark = ""; - if(it.getIsTemporary() == 0) { + if (it.getIsTemporary() == 0) { TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(it.getProductSkuId()); if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); @@ -489,14 +493,16 @@ public class PrintMechineConsumer { if ("postPay".equals(orderInfo.getUseType()) && isPrint(it, orderInfo.getId())) { return; } + String classifyPrint = tbPrintMachineWithBLOBs.getClassifyPrint(); String categoryId = tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId(); - Long count = categoryInfos.stream().filter(c -> c.getId().toString().equals(categoryId) ).count(); log.info("获取当前类别是否未打印类别:{}", count); + // 如果是部分打印,并且所属分类不在设置的列表中,则不打印 + if ("1".equals(classifyPrint) && count == 0) { - if (count > 0) { + } else { TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getProductSkuId())); String remark = ""; if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { @@ -522,22 +528,24 @@ public class PrintMechineConsumer { details.parallelStream().filter(o -> ObjectUtil.defaultIfNull(o.getIsPrint(), 0) == 1).forEach(it -> { long count = 0; Integer isWaitCall = ObjectUtil.defaultIfNull(it.getIsWaitCall(), 0); - if(isWaitCall == 1) { + if (isWaitCall == 1) { it.setProductName("【等叫】" + it.getProductName()); } if (it.getIsTemporary() == 1) { it.setProductId(0); it.setProductSkuId(0); it.setProductName("【临】" + it.getProductName()); - }else{ + } else { String categoryId = tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId(); count = categoryInfos.stream().filter(c -> c.getId().toString().equals(categoryId) ).count(); } - + String classifyPrint = tbPrintMachineWithBLOBs.getClassifyPrint(); + // 如果是部分打印,并且所属分类不在设置的列表中,则不打印 + if ("1".equals(classifyPrint) && count == 0) { - if (count > 0) { + } else { String remark = ""; if (it.getIsTemporary() == 0) { TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getProductSkuId())); @@ -582,27 +590,18 @@ public class PrintMechineConsumer { if (ObjectUtil.isNotEmpty(tbOrderDetails) && tbOrderDetails.size() > 0) { List detailList = new ArrayList<>(); tbOrderDetails.parallelStream().forEach(it -> { - String categoryId = tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId(); - - Long count = categoryInfos.stream().filter(c -> - c.getId().toString().equals(categoryId) - ).count(); - log.info("获取当前类别是否未打印类别:{}", count); - - TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getProductSkuId())); String remark = ""; if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } BigDecimal unitPrice = it.getPrice(); - if(it.getIsMember() == 1){ + if (it.getIsMember() == 1) { unitPrice = it.getMemberPrice(); } 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); - }); String balance = "0"; @@ -647,20 +646,21 @@ public class PrintMechineConsumer { } else { categoryId = it.getCategoryId(); } - - + String classifyPrint = tbPrintMachineWithBLOBs.getClassifyPrint(); Long count = categoryInfos.stream().filter(c -> c.getId().toString().equals(categoryId) ).count(); + // 如果是部分打印,并且所属分类不在设置的列表中,则不打印 + if ("1".equals(classifyPrint) && count == 0) { - if (count > 0) { + } else { TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getSkuId())); String remark = ""; if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } BigDecimal unitPrice = it.getSalePrice(); - if(it.getIsMember() == 1){ + if (it.getIsMember() == 1) { unitPrice = it.getMemberPrice(); } BigDecimal subTotal = NumberUtil.mul(it.getNumber(), unitPrice.subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); @@ -717,11 +717,14 @@ public class PrintMechineConsumer { } + String classifyPrint = tbPrintMachineWithBLOBs.getClassifyPrint(); Long count = categoryInfos.stream().filter(c -> c.getId().toString().equals(categoryId) ).count(); + // 如果是部分打印,并且所属分类不在设置的列表中,则不打印 + if ("1".equals(classifyPrint) && count == 0) { - if (count > 0) { + } else { TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getSkuId())); String remark = ""; if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { @@ -751,15 +754,15 @@ public class PrintMechineConsumer { categoryId = it.getCategoryId(); } - + String classifyPrint = tbPrintMachineWithBLOBs.getClassifyPrint(); Long count = categoryInfos.stream().filter(c -> c.getId().toString().equals(categoryId) ).count(); - log.info("获取当前类别是否未打印类别:{}", count); + // 如果是部分打印,并且所属分类不在设置的列表中,则不打印 + if ("1".equals(classifyPrint) && count == 0) { - - if (count > 0) { + } else { TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getSkuId())); String remark = ""; if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { 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 1ab385a..3708220 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 @@ -129,17 +129,18 @@ public abstract class PrinterHandler { if (isTemporary == 1) { count = 1; } - if (machine.getClassifyPrint() != null && "1".equals(machine.getClassifyPrint()) && count == 0) { - log.warn("分类未添加菜品: {} : {}", item.getProductName(), sku.getSpecSnap()); - return; - } + String classifyPrint = machine.getClassifyPrint(); + // 如果是部分打印,并且所属分类不在设置的列表中,则不打印 + if("1".equals(classifyPrint) && count == 0) { - String remark = StrUtil.isNotBlank(sku.getSpecSnap()) ? sku.getSpecSnap() : ""; - item.setRemark(remark); - if (isReturn) { - returnDishesPrint(orderInfo, item, machine); - } else { - normalDishesPrint(orderInfo, item, machine); + }else{ + String remark = StrUtil.isNotBlank(sku.getSpecSnap()) ? sku.getSpecSnap() : ""; + item.setRemark(remark); + if (isReturn) { + returnDishesPrint(orderInfo, item, machine); + } else { + normalDishesPrint(orderInfo, item, machine); + } } }); } 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 876fc8f..ec123e0 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java @@ -179,13 +179,14 @@ public class CloudPrinterService { details.parallelStream().filter(o -> ObjectUtil.defaultIfNull(o.getIsPrint(), 0) == 1).forEach(it -> { long count = 0; Integer isWaitCall = ObjectUtil.defaultIfNull(it.getIsWaitCall(), 0); - if(isWaitCall == 1) { + if (isWaitCall == 1) { it.setProductName("【等叫】" + it.getProductName()); } if (it.getIsTemporary() == 1) { it.setProductId(0); it.setProductSkuId(0); it.setProductName("【临】" + it.getProductName()); + count = 1; } else { String categoryId = tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId(); count = categoryInfos.stream().filter(c -> @@ -193,8 +194,11 @@ public class CloudPrinterService { ).count(); } + String classifyPrint = tbPrintMachineWithBLOBs.getClassifyPrint(); + // 如果是部分打印,并且所属分类不在设置的列表中,则不打印 + if ("1".equals(classifyPrint) && count == 0) { - if (count > 0) { + } else { String remark = ""; if (it.getIsTemporary() == 0) { TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getProductSkuId())); @@ -230,8 +234,11 @@ public class CloudPrinterService { Long count = categoryInfos.stream().filter(c -> c.getId().toString().equals(categoryId) ).count(); + String classifyPrint = tbPrintMachineWithBLOBs.getClassifyPrint(); + // 如果是部分打印,并且所属分类不在设置的列表中,则不打印 + if ("1".equals(classifyPrint) && count == 0) { - if (count > 0) { + } else { TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getSkuId())); String remark = ""; if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { @@ -265,27 +272,18 @@ public class CloudPrinterService { if (ObjectUtil.isNotEmpty(tbOrderDetails) && tbOrderDetails.size() > 0) { List detailList = new ArrayList<>(); tbOrderDetails.parallelStream().forEach(it -> { - String categoryId = tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId(); - - Long count = categoryInfos.stream().filter(c -> - c.getId().toString().equals(categoryId) - ).count(); - log.info("获取当前类别是否未打印类别:{}", count); - - TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getProductSkuId())); String remark = ""; if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } BigDecimal unitPrice = it.getPrice(); - if(it.getIsMember() == 1){ + if (it.getIsMember() == 1) { unitPrice = it.getMemberPrice(); } 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); - }); String balance = "0"; @@ -336,20 +334,21 @@ public class CloudPrinterService { } else { categoryId = it.getCategoryId(); } - - + String classifyPrint = tbPrintMachineWithBLOBs.getClassifyPrint(); Long count = categoryInfos.stream().filter(c -> c.getId().toString().equals(categoryId) ).count(); + // 如果是部分打印,并且所属分类不在设置的列表中,则不打印 + if ("1".equals(classifyPrint) && count == 0) { - if (count > 0) { + } else { TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getSkuId())); String remark = ""; if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } BigDecimal unitPrice = it.getSalePrice(); - if(it.getIsMember() == 1){ + if (it.getIsMember() == 1) { unitPrice = it.getMemberPrice(); } BigDecimal subTotal = NumberUtil.mul(it.getNumber(), unitPrice.subtract(NumberUtil.null2Zero(it.getDiscountSaleAmount()))); @@ -412,27 +411,18 @@ public class CloudPrinterService { if (ObjectUtil.isNotEmpty(tbOrderDetails) && tbOrderDetails.size() > 0) { List detailList = new ArrayList<>(); tbOrderDetails.parallelStream().forEach(it -> { - String categoryId = tbProductMapper.selectByPrimaryKey(Integer.valueOf(it.getProductId())).getCategoryId(); - - Long count = categoryInfos.stream().filter(c -> - c.getId().toString().equals(categoryId) - ).count(); - log.info("获取当前类别是否未打印类别:{}", count); - - TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getProductSkuId())); String remark = ""; if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { remark = tbProductSkuWithBLOBs.getSpecSnap(); } BigDecimal unitPrice = it.getPrice(); - if(it.getIsMember() == 1){ + if (it.getIsMember() == 1) { unitPrice = it.getMemberPrice(); } 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); - }); String balance = "0"; @@ -477,25 +467,18 @@ public class CloudPrinterService { categoryId = it.getCategoryId(); } - - Long count = categoryInfos.stream().filter(c -> - c.getId().toString().equals(categoryId) - ).count(); - - if (count > 0) { - TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getSkuId())); - String remark = ""; - if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { - remark = tbProductSkuWithBLOBs.getSpecSnap(); - } - BigDecimal unitPrice = it.getSalePrice(); - if(it.getIsMember() == 1){ - unitPrice = it.getMemberPrice(); - } - 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); + TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getSkuId())); + String remark = ""; + if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { + remark = tbProductSkuWithBLOBs.getSpecSnap(); } + BigDecimal unitPrice = it.getSalePrice(); + if (it.getIsMember() == 1) { + unitPrice = it.getMemberPrice(); + } + 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); }); @@ -559,8 +542,11 @@ public class CloudPrinterService { Long count = categoryInfos.stream().filter(c -> c.getId().toString().equals(categoryId) ).count(); + String classifyPrint = tbPrintMachineWithBLOBs.getClassifyPrint(); + // 如果是部分打印,并且所属分类不在设置的列表中,则不打印 + if ("1".equals(classifyPrint) && count == 0) { - if (count > 0) { + } else { TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getSkuId())); String remark = ""; if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { @@ -589,11 +575,14 @@ public class CloudPrinterService { List cashierCarts = tbCashierCartMapper.selectByOrderId(orderInfo.getId().toString(), "closed"); if (ObjectUtil.isNotEmpty(cashierCarts) && cashierCarts.size() > 0) { cashierCarts.parallelStream().forEach(it -> { + String classifyPrint = tbPrintMachineWithBLOBs.getClassifyPrint(); Long count = categoryInfos.stream().filter(c -> c.getId().toString().equals(it.getCategoryId().toString()) ).count(); + // 如果是部分打印,并且所属分类不在设置的列表中,则不打印 + if ("1".equals(classifyPrint) && count == 0) { - if (count > 0) { + } else { TbProductSkuWithBLOBs tbProductSkuWithBLOBs = tbProductSkuMapper.selectByPrimaryKey(Integer.valueOf(it.getSkuId())); String remark = ""; if (ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs) && ObjectUtil.isNotEmpty(tbProductSkuWithBLOBs.getSpecSnap())) { @@ -604,7 +593,6 @@ public class CloudPrinterService { for (int i = 0; i < it.getNumber().intValue(); i++) { FeieyunPrintUtil.printLabelMsg(tbPrintMachineWithBLOBs.getAddress(), orderInfo.getOrderType().equals("miniapp") ? orderInfo.getTableName() : orderInfo.getMasterId(), it.getName(), 1, DateUtils.getTimes(new Date(orderInfo.getCreatedAt())), it.getSalePrice().toPlainString(), remark); } - } }); } From edfd6e593d344d489a6e05f7c848e62d8f094c27 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, 6 Dec 2024 18:29:35 +0800 Subject: [PATCH 77/77] =?UTF-8?q?feat:=20=E6=9F=A5=E8=AF=A2=E5=BA=97?= =?UTF-8?q?=E9=93=BA=E4=B8=8D=E6=A0=B9=E6=8D=AEstate=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/cashierservice/service/OrderService.java | 3 +-- 1 file changed, 1 insertion(+), 2 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 949e60c..f9e1b49 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -184,8 +184,7 @@ public class OrderService { */ private ShopEatTypeInfoDTO getShopEatTypeInfoDTO(Object shopId, String eatModel, String tableId) { TbShopInfo shopInfo = mpShopInfoMapper.selectOne(new LambdaQueryWrapper() - .eq(TbShopInfo::getId, shopId) - .eq(TbShopInfo::getStatus, 1)); + .eq(TbShopInfo::getId, shopId)); if (shopInfo == null) { throw new MsgException("店铺信息不存在"); }