diff --git a/db/800pjcloudx_hardware.sql b/db/800pjcloudx_hardware.sql index f72ad8d0e..cd04b8c58 100644 --- a/db/800pjcloudx_hardware.sql +++ b/db/800pjcloudx_hardware.sql @@ -233,6 +233,7 @@ CREATE TABLE hard_after_sale_car product_name varchar(128) NOT NULL COMMENT '商品名', product_pic varchar(256) NOT NULL COMMENT '商品图片', product_price bigint NOT NULL COMMENT '商品价格', + product_nature varchar(64) DEFAULT NULL COMMENT '商品性质', product_count int NOT NULL COMMENT '数量', product_weight decimal(10, 2) COMMENT '重量', total_price bigint COMMENT '总价(分)', diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderStatusEnum.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderStatusEnum.java index f4a70ed82..742a76838 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderStatusEnum.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderStatusEnum.java @@ -45,7 +45,7 @@ public enum HardOrderStatusEnum { ); } - public static HardOrderStatusEnum valueOfByType(Integer type) { + public static HardOrderStatusEnum valueOfByType(String type) { if (ObjectUtil.isEmpty(type)) return null; return Arrays.stream(values()).filter(v -> ObjectUtil.equals(type, v.getType())).findFirst().get(); } diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardPayTypeEnum.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardPayTypeEnum.java index 20d56f2b4..07d252638 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardPayTypeEnum.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardPayTypeEnum.java @@ -68,6 +68,11 @@ public enum HardPayTypeEnum { CSXFK ); + // 简单支付(没有购物车) + public static final List isSimplePayList = List.of( + WALLET_QR_CODE_SCAN + ); + public static HardPayTypeEnum valueOfByType(String type) { if (ObjectUtil.isEmpty(type)) return null; return Arrays.stream(values()).filter(v -> ObjectUtil.equals(type, v.getType())).findFirst().get(); diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardDeptTotalVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardDeptTotalVo.java index 287cc9d6c..1e6e9fce4 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardDeptTotalVo.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardDeptTotalVo.java @@ -3,6 +3,8 @@ package com.bsd.pjcloud.hard.api.vo.order; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.math.BigDecimal; + @Data public class HardDeptTotalVo { @@ -13,7 +15,7 @@ public class HardDeptTotalVo { private String deptName; @Schema(description = "批量充值金额") - private Long walletPrice = 0L; + private BigDecimal walletPrice = BigDecimal.ZERO; @Schema(description = "批量充值次数") private Long walletCount = 0L; @@ -25,37 +27,37 @@ public class HardDeptTotalVo { private Long walletReduceCount = 0L; @Schema(description = "退还各自食堂金额") - private Long walletReturnCanteenPrice = 0L; + private BigDecimal walletReturnCanteenPrice = BigDecimal.ZERO; @Schema(description = "退还各自食堂次数") private Long walletReturnCanteenCount = 0L; @Schema(description = "单次充值金额") - private Long walletOncePrice = 0L; + private BigDecimal walletOncePrice = BigDecimal.ZERO; @Schema(description = "单次充值次数") private Long walletOnceCount = 0L; @Schema(description = "单次扣减金额") - private Long walletOnceReducePrice = 0L; + private BigDecimal walletOnceReducePrice = BigDecimal.ZERO; @Schema(description = "单次扣减次数") private Long walletOnceReduceCount = 0L; @Schema(description = "消费金额") - private Long orderPayPrice = 0L; + private BigDecimal orderPayPrice = BigDecimal.ZERO; @Schema(description = "消费次数") private Long orderPayCount = 0L; @Schema(description = "退款金额") - private Long orderRefundPrice = 0L; + private BigDecimal orderRefundPrice = BigDecimal.ZERO; @Schema(description = "退款次数") private Long orderRefundCont = 0L; @Schema(description = "盈利金额") - private Long orderProfitPrice = 0L; + private BigDecimal orderProfitPrice = BigDecimal.ZERO; @Schema(description = "盈利次数") private Long orderProfitCont = 0L; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardAfterSaleController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardAfterSaleController.java index dcfb53d39..871f3a172 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardAfterSaleController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardAfterSaleController.java @@ -23,7 +23,6 @@ import org.springframework.http.HttpHeaders; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import lombok.RequiredArgsConstructor; -import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -106,7 +105,7 @@ public class HardAfterSaleController { @PostMapping(value = "/admin-refund") @Operation(summary = "后台退款") - @Idempotent(expireTime = 10, info = "正在退款中,请勿重复操作") + @Idempotent(expireTime = 5, info = "正在退款中,请勿重复操作") @PreAuthorize("@pms.hasPermission('hard_hardAfterSale_adminRefund')") public R adminRefund(@RequestBody HardAdminRefundDto dto) { PjcloudUser user = SecurityUtils.getUser(); @@ -115,7 +114,7 @@ public class HardAfterSaleController { @PostMapping(value = "/admin-reinforce-refund") @Operation(summary = "后台强化退款") - @Idempotent(expireTime = 10, info = "正在退款中,请勿重复操作") + @Idempotent(expireTime = 5, info = "正在退款中,请勿重复操作") @PreAuthorize("@pms.hasPermission('hard_hardAfterSale_adminRefund')") public R adminReinforceRefund(@RequestBody HardAdminRefundReinforceDto dto) { PjcloudUser user = SecurityUtils.getUser(); diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCarController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCarController.java index 933598f32..3c9263f94 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCarController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCarController.java @@ -81,11 +81,9 @@ public class HardCarController { @GetMapping("/order-id") @Operation(summary = "根据订单id查询购物车") public R> orderId(@ParameterObject Page page, @RequestParam Long orderId) { - if (ObjectUtil.isEmpty(orderId)) { - R.ok(null); - } + if (ObjectUtil.isEmpty(orderId)) R.ok(null); HardOrderEntity order = hardOrderService.getById(orderId); - if (ObjectUtil.isEmpty(order) || ObjectUtil.isEmpty(order.getParentCarId())) return null; + if (ObjectUtil.isEmpty(order) || ObjectUtil.isEmpty(order.getParentCarId())) return R.ok(null); HardCarDto dto = new HardCarDto(); dto.setParentCarId(order.getParentCarId()); return R.ok(hardCarService.pageJoin(page, dto)); diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderTotalController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderTotalController.java index 4ca52ffe1..e1a02c57e 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderTotalController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderTotalController.java @@ -427,75 +427,43 @@ public class HardOrderTotalController { lineNumber++; // 批量充值 if (ObjectUtil.isNotEmpty(v.getWalletPrice())) { - walletPriceSum = walletPriceSum.add(BigDecimal.valueOf(v.getWalletPrice())); - v.setWalletPrice(BigDecimal.valueOf(v.getWalletPrice()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).longValue()); - } - if (ObjectUtil.isNotEmpty(v.getWalletCount())) { - walletCountSum = walletCountSum.add(BigDecimal.valueOf(v.getWalletCount())); - v.setWalletCount(BigDecimal.valueOf(v.getWalletCount()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).longValue()); + walletPriceSum = walletPriceSum.add(v.getWalletPrice()); + v.setWalletPrice(v.getWalletPrice().divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP)); } // 批量扣减 if (ObjectUtil.isNotEmpty(v.getWalletReducePrice())) { walletReducePriceSum = walletReducePriceSum.add(BigDecimal.valueOf(v.getWalletReducePrice())); v.setWalletReducePrice(BigDecimal.valueOf(v.getWalletReducePrice()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).longValue()); } - if (ObjectUtil.isNotEmpty(v.getWalletReduceCount())) { - walletReduceCountSum = walletReduceCountSum.add(BigDecimal.valueOf(v.getWalletReduceCount())); - v.setWalletReduceCount(BigDecimal.valueOf(v.getWalletReduceCount()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).longValue()); - } // 单次充值 if (ObjectUtil.isNotEmpty(v.getWalletOncePrice())) { - walletOncePriceSum = walletOncePriceSum.add(BigDecimal.valueOf(v.getWalletOncePrice())); - v.setWalletOncePrice(BigDecimal.valueOf(v.getWalletOncePrice()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).longValue()); - } - if (ObjectUtil.isNotEmpty(v.getWalletOnceCount())) { - walletOnceCountSum = walletOnceCountSum.add(BigDecimal.valueOf(v.getWalletOnceCount())); - v.setWalletOnceCount(BigDecimal.valueOf(v.getWalletOnceCount()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).longValue()); + walletOncePriceSum = walletOncePriceSum.add(v.getWalletOncePrice()); + v.setWalletOncePrice(v.getWalletOncePrice().divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP)); } // 单次扣减 if (ObjectUtil.isNotEmpty(v.getWalletOnceReducePrice())) { - walletOnceReducePriceSum = walletOnceReducePriceSum.add(BigDecimal.valueOf(v.getWalletOnceReducePrice())); - v.setWalletOnceReducePrice(BigDecimal.valueOf(v.getWalletOnceReducePrice()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).longValue()); + walletOnceReducePriceSum = walletOnceReducePriceSum.add(v.getWalletOnceReducePrice()); + v.setWalletOnceReducePrice(v.getWalletOnceReducePrice().divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP)); } - if (ObjectUtil.isNotEmpty(v.getWalletOnceReduceCount())) { - walletOnceReduceCountSum = walletOnceReduceCountSum.add(BigDecimal.valueOf(v.getWalletOnceReduceCount())); - v.setWalletOnceReduceCount(BigDecimal.valueOf(v.getWalletOnceReduceCount()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).longValue()); - } - // + // 消费金额 if (ObjectUtil.isNotEmpty(v.getOrderPayPrice())) { - orderPayPriceSum = orderPayPriceSum.add(BigDecimal.valueOf(v.getOrderPayPrice())); - v.setOrderPayPrice(BigDecimal.valueOf(v.getOrderPayPrice()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).longValue()); - } - if (ObjectUtil.isNotEmpty(v.getOrderPayCount())) { - orderPayCountSum = orderPayCountSum.add(BigDecimal.valueOf(v.getOrderPayCount())); - v.setOrderPayCount(BigDecimal.valueOf(v.getOrderPayCount()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).longValue()); + orderPayPriceSum = orderPayPriceSum.add(v.getOrderPayPrice()); + v.setOrderPayPrice(v.getOrderPayPrice().divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP)); } // if (ObjectUtil.isNotEmpty(v.getOrderRefundPrice())) { - orderRefundPriceSum = orderRefundPriceSum.add(BigDecimal.valueOf(v.getOrderRefundPrice())); - v.setOrderRefundPrice(BigDecimal.valueOf(v.getOrderRefundPrice()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).longValue()); - } - if (ObjectUtil.isNotEmpty(v.getOrderRefundCont())) { - orderRefundContSum = orderRefundContSum.add(BigDecimal.valueOf(v.getOrderRefundCont())); - v.setOrderRefundCont(BigDecimal.valueOf(v.getOrderRefundCont()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).longValue()); + orderRefundPriceSum = orderRefundPriceSum.add(v.getOrderRefundPrice()); + v.setOrderRefundPrice(v.getOrderRefundPrice().divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP)); } // if (ObjectUtil.isNotEmpty(v.getOrderProfitPrice())) { - orderProfitPriceSum = orderProfitPriceSum.add(BigDecimal.valueOf(v.getOrderProfitPrice())); - v.setOrderProfitPrice(BigDecimal.valueOf(v.getOrderProfitPrice()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).longValue()); - } - if (ObjectUtil.isNotEmpty(v.getOrderProfitCont())) { - orderProfitContSum = orderProfitContSum.add(BigDecimal.valueOf(v.getOrderProfitCont())); - v.setOrderProfitCont(BigDecimal.valueOf(v.getOrderProfitCont()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).longValue()); + orderProfitPriceSum = orderProfitPriceSum.add(v.getOrderProfitPrice()); + v.setOrderProfitPrice(v.getOrderProfitPrice().divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP)); } // 退还各自食堂金额 if (ObjectUtil.isNotEmpty(v.getWalletReturnCanteenPrice())) { - walletReturnCanteenPriceSum = walletReturnCanteenPriceSum.add(BigDecimal.valueOf(v.getWalletReturnCanteenPrice())); - v.setWalletReturnCanteenPrice(BigDecimal.valueOf(v.getWalletReturnCanteenPrice()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).longValue()); - } - if (ObjectUtil.isNotEmpty(v.getWalletReturnCanteenCount())) { - walletReturnCanteenCountSum = walletReturnCanteenCountSum.add(BigDecimal.valueOf(v.getWalletReturnCanteenCount())); - v.setWalletReturnCanteenCount(BigDecimal.valueOf(v.getWalletReturnCanteenCount()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).longValue()); + walletReturnCanteenPriceSum = walletReturnCanteenPriceSum.add(v.getWalletReturnCanteenPrice()); + v.setWalletReturnCanteenPrice(v.getWalletReturnCanteenPrice().divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP)); } // 批量充值 map.put("walletPriceSum", walletPriceSum.divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).toString()); diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java index 954dd9689..246cf0248 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java @@ -515,10 +515,10 @@ public class HardAfterSaleServiceImpl extends ServiceImpl computerCarList = dto.getCarList().stream().map((item) -> { - HardCreateCarDto entity = new HardCreateCarDto(); - entity.setParentCarId(item.getParentCarId()); - entity.setProductId(item.getProductId()); - entity.setProductNature(HardProductNatureEnum.valueOfByType(item.getProductNature())); - entity.setProductCount(item.getProductCount()); - entity.setProductWeight(item.getProductWeight()); - return entity; - }).toList(); - int refundPrice = hardCarService.computerCarTotalPrice(HardTypeEnum.valueOfByType(order.getSysType()), HardOrderTypeEnum.valueOfByType(order.getOrderType()), computerCarList); + int refundPrice = order.getPayPrice(); + if (!isSimplePayList) { + List computerCarList = dto.getCarList().stream().map((item) -> { + HardCreateCarDto entity = new HardCreateCarDto(); + entity.setParentCarId(item.getParentCarId()); + entity.setProductId(item.getProductId()); + entity.setProductNature(HardProductNatureEnum.valueOfByType(item.getProductNature())); + entity.setProductCount(item.getProductCount()); + entity.setProductWeight(item.getProductWeight()); + return entity; + }).toList(); + refundPrice = hardCarService.computerCarTotalPrice(HardTypeEnum.valueOfByType(order.getSysType()), HardOrderTypeEnum.valueOfByType(order.getOrderType()), computerCarList); + } saveObj.setType(HardSaleTypeEnum.AFTER_SALE.getType()); saveObj.setStatus(HardSaleStatusEnum.COMPLETE.getStatus()); @@ -560,7 +572,9 @@ public class HardAfterSaleServiceImpl extends ServiceImpl carList = dto.getCarList().stream().map((item) -> + HardCarEntity.builder() + .productId(item.getProductId()) + .productCount(item.getProductCount()) + .productWeight(item.getProductWeight()) + .productNature(item.getProductName()) + .build() + ).toList(); + hardOrderService.fastenerInventory(order, carList, YesNoEnum.NO); + } // 执行退款 getSelf().refund(saveObj.getId()); - // 退库存 - List carList = dto.getCarList().stream().map((item) -> - HardCarEntity.builder() - .productId(item.getProductId()) - .productCount(item.getProductCount()) - .productWeight(item.getProductWeight()) - .productNature(item.getProductName()) - .build() - ).toList(); - hardOrderService.fastenerInventory(order, carList, YesNoEnum.NO); return true; } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java index 31048bb46..2234023be 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java @@ -58,6 +58,7 @@ import com.bsd.pjcloud.hard.service.*; import com.bsd.pjcloud.supermarket.api.feign.RemoteShopSkuService; import com.bsd.pjcloud.supermarket.api.feign.RemoteShopSpuService; import com.bsd.pjcloud.supermarket.api.feign.RemoteSupermarketSpuService; +import com.bsd.pjcloud.supermarket.dto.SkuStockChangeDTO; import com.bsd.pjcloud.supermarket.dto.SupermarketSpuUpdateStockReqDTO; import com.bsd.pjcloud.supermarket.entity.ShopSkuEntity; import com.bsd.pjcloud.supermarket.vo.app.ShopSpuDetailAppVo; @@ -99,9 +100,6 @@ import java.util.concurrent.CompletableFuture; /** * 订单表 - * - * @author dzc - * @date 2025-01-05 16:46:25 */ @Validated @Slf4j @@ -939,7 +937,7 @@ public class HardOrderServiceImpl extends ServiceImpl ObjectUtil.isNotEmpty(v.getIncrCount()) && v.getIncrCount() > 0).toList(); + }).filter(v -> ObjectUtil.isNotEmpty(v.getIncrCount()) && ObjectUtil.notEqual(v.getIncrCount(), 0.0)).toList(); dto.setItems(list); R updateSkuStockRes = supermarketSpuService.updateSpuStock(dto); if (updateSkuStockRes.getCode() != 0) { @@ -949,7 +947,46 @@ public class HardOrderServiceImpl extends ServiceImpl list = carList.stream().map(v -> { + SkuStockChangeDTO.Item item = new SkuStockChangeDTO.Item(); + item.setId(v.getProductId()); + if (ObjectUtil.isNotEmpty(v.getProductCount()) && !ObjectUtil.equals(v.getProductCount(), 0)) { + // 按数量 + int prouctCount = v.getProductCount(); + // 如果退款购物车数组里有,就用退款购物车的数量 + if (ObjectUtil.isNotEmpty(refundCarList)) { + HardCarEntity refundCarTarget = refundCarList.stream().filter(i -> ObjectUtil.equals(i.getProductId(), v.getProductId())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(refundCarTarget) && ObjectUtil.isNotEmpty(refundCarTarget.getProductCount())) { + prouctCount = refundCarTarget.getProductCount(); + } + } + double count = BigDecimal.valueOf(prouctCount).multiply(BigDecimal.valueOf(base)).setScale(2, RoundingMode.HALF_UP).doubleValue(); + item.setIncrCount(count); + } else if (ObjectUtil.isNotEmpty(v.getProductWeight()) && v.getProductWeight().compareTo(BigDecimal.valueOf(0)) != 0) { + // 按重量 + BigDecimal productWeight = v.getProductWeight(); + // 如果退款购物车数组里有,就用退款购物车的数量 + if (ObjectUtil.isNotEmpty(refundCarList)) { + HardCarEntity refundCarTarget = refundCarList.stream().filter(i -> ObjectUtil.equals(i.getProductId(), v.getProductId())).findFirst().orElse(null); + if (ObjectUtil.isNotEmpty(refundCarTarget) && ObjectUtil.isNotEmpty(refundCarTarget.getProductCount())) { + productWeight = refundCarTarget.getProductWeight(); + } + } + double weight = productWeight.multiply(BigDecimal.valueOf(base)).setScale(2, RoundingMode.HALF_UP).doubleValue(); + item.setIncrCount(weight); + } + return item; + }).filter(v -> ObjectUtil.isNotEmpty(v.getIncrCount()) && ObjectUtil.notEqual(v.getIncrCount(), 0.0)).toList(); + dto.setItems(list); + R updateSkuStockRes = remoteShopSkuService.deductStock(dto); + if (updateSkuStockRes.getCode() != 0) { + log.info("|{}|{},失败,order:|{}|,isReduce:|{}|,params:|{}|", TAG, CarErrorMsg, JSON.toJSON(order), isReduce, JSON.toJSON(dto)); + throw new RuntimeException(CarErrorMsg + "错误"); + } + log.info("|{}|{},成功,order:|{}|,isReduce:|{}|,params:|{}|", TAG, CarErrorMsg, JSON.toJSON(order), isReduce, JSON.toJSON(dto)); return; } } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java index 4a6304e53..173154fbc 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java @@ -472,13 +472,12 @@ public class HardOrderTotalServiceImpl implements HardOrderTotalService { for (HardDeptTotalVo v : resultList) { if (ObjectUtil.isNotEmpty(walletBatchList)) { walletBatchList.stream().filter(i -> ObjectUtil.equals(i.getDeptId(), v.getDeptId())).findFirst().ifPresent(i -> { - v.setWalletPrice(i.getSum()); + v.setWalletPrice(BigDecimal.valueOf(i.getSum())); v.setWalletCount(i.getCount()); }); } if (ObjectUtil.isNotEmpty(walletReduceList)) { walletReduceList.stream().filter(i -> ObjectUtil.equals(i.getDeptId(), v.getDeptId())).findFirst().ifPresent(i -> { - // v.setWalletReducePrice(i.getSum()); v.setWalletReducePrice(Math.abs(i.getSum())); v.setWalletReduceCount(i.getCount()); }); @@ -486,32 +485,31 @@ public class HardOrderTotalServiceImpl implements HardOrderTotalService { // 退还各自食堂 if (ObjectUtil.isNotEmpty(walletRetrunCanteenList)) { walletRetrunCanteenList.stream().filter(i -> ObjectUtil.equals(i.getDeptId(), v.getDeptId())).findFirst().ifPresent(i -> { - v.setWalletReturnCanteenPrice(Math.abs(i.getSum())); + v.setWalletReturnCanteenPrice(BigDecimal.valueOf(Math.abs(i.getSum()))); v.setWalletReturnCanteenCount(i.getCount()); }); } if (ObjectUtil.isNotEmpty(walletOnceBatchList)) { walletOnceBatchList.stream().filter(i -> ObjectUtil.equals(i.getDeptId(), v.getDeptId())).findFirst().ifPresent(i -> { - v.setWalletOncePrice(i.getSum()); + v.setWalletOncePrice(BigDecimal.valueOf(i.getSum())); v.setWalletOnceCount(i.getCount()); }); } if (ObjectUtil.isNotEmpty(walletOnceReduceList)) { walletOnceReduceList.stream().filter(i -> ObjectUtil.equals(i.getDeptId(), v.getDeptId())).findFirst().ifPresent(i -> { - // v.setWalletOnceReducePrice(i.getSum()); - v.setWalletOnceReducePrice(Math.abs(i.getSum())); + v.setWalletOnceReducePrice(BigDecimal.valueOf(Math.abs(i.getSum()))); v.setWalletOnceReduceCount(i.getCount()); }); } if (ObjectUtil.isNotEmpty(payList)) { payList.stream().filter(i -> ObjectUtil.equals(i.getDeptId(), v.getDeptId())).findFirst().ifPresent(i -> { - v.setOrderPayPrice(i.getSum()); + v.setOrderPayPrice(BigDecimal.valueOf(i.getSum())); v.setOrderPayCount(i.getCount()); }); } if (ObjectUtil.isNotEmpty(refundList)) { refundList.stream().filter(i -> ObjectUtil.equals(i.getDeptId(), v.getDeptId())).findFirst().ifPresent(i -> { - v.setOrderRefundPrice(i.getSum()); + v.setOrderRefundPrice(BigDecimal.valueOf(i.getSum())); v.setOrderRefundCont(i.getCount()); }); } @@ -520,7 +518,7 @@ public class HardOrderTotalServiceImpl implements HardOrderTotalService { for (HardDeptTotalVo v : resultList) { // 流水金额 if (ObjectUtil.isNotEmpty(v.getOrderPayPrice())) { - v.setOrderProfitPrice(v.getOrderPayPrice() - v.getOrderRefundPrice()); + v.setOrderProfitPrice(v.getOrderPayPrice().subtract(v.getOrderRefundPrice())); } // 流水次数 if (ObjectUtil.isNotEmpty(v.getOrderPayCount())) { diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/file/部门交易金额汇总.xlsx b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/file/部门交易金额汇总.xlsx index 8901e6a61..a3b211e9c 100644 Binary files a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/file/部门交易金额汇总.xlsx and b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/file/部门交易金额汇总.xlsx differ diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java index 6f6cbd941..5c79e3515 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletTransactionController.java @@ -145,6 +145,13 @@ public class WalletTransactionController { return R.ok(walletTransactionService.scopePageList(page, dto, dataScope)); } + @Operation(summary = "分页查询复杂查询(无权限)", description = "分页查询复杂查询(无权限)") + @GetMapping("/public/page-join") + public R publicPageJoin(@ParameterObject Page page, @ParameterObject WalletTransactionDto dto) { + return R.ok(walletTransactionService.scopePageList(page, dto, null)); + } + + @Operation(summary = "通过id查询", description = "通过id查询") @GetMapping("/{id}") @PreAuthorize("@pms.hasPermission('wallet_walletTransaction_view')") diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchManageController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchManageController.java index 1a8662974..d96f46247 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchManageController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchManageController.java @@ -107,7 +107,7 @@ public class MchManageController { @Inner @GetMapping("/get-first-mch") public R getFirstMch(@RequestParam List deptIds, @RequestParam MerchantTypeEnum mchType) { - MchManageVo mchManage = mchManageService.getFirstMch(deptIds, mchType); + MchManageVo mchManage = mchManageService.getFirstMch(deptIds, List.of(mchType)); if (ObjectUtil.isEmpty(mchManage)) return R.failed("商户不存在"); return R.ok(mchManage); } @@ -115,7 +115,7 @@ public class MchManageController { @Inner @GetMapping("/get-first-mch-by-dept-id") public R getFirstMchByDeptId(@RequestParam Long deptId, @RequestParam MerchantTypeEnum mchType) { - MchManageVo mchManage = mchManageService.getFirstMchByDeptId(deptId, mchType); + MchManageVo mchManage = mchManageService.getFirstMchByDeptId(deptId, List.of(mchType)); if (ObjectUtil.isEmpty(mchManage)) return R.failed("商户不存在"); return R.ok(mchManage); } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchManageService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchManageService.java index c758cb761..1350069d0 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchManageService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchManageService.java @@ -37,9 +37,9 @@ public interface MchManageService extends IService { MchManageVo getByDeptId(Long deptId, MerchantTypeEnum type); - MchManageVo getFirstMch(List deptIds, MerchantTypeEnum mchType); + MchManageVo getFirstMch(List deptIds, List mchTypeList); - MchManageVo getFirstMchByDeptId(Long deptId, MerchantTypeEnum mchType); + MchManageVo getFirstMchByDeptId(Long deptId, List mchTypeList); /** * 刷新商户二维码 diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java index 07553d851..611791588 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java @@ -160,7 +160,7 @@ public class WalletActiveServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper() .isNull(WalletActiveEntity::getUserId) diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java index 0759bbd0b..122145ffa 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java @@ -489,7 +489,7 @@ public class WalletManageServiceImpl extends ServiceImpl() .set(WalletActiveEntity::getMerchantId, mch.getId()) @@ -552,7 +552,7 @@ public class WalletManageServiceImpl extends ServiceImpl userIds = list.stream().map(WalletManageVo::getUserId).distinct().toList(); - R> userList = userService.getUserById(new ArrayList<>(userIds)); + R> userList = userService.getInnerUserById(new ArrayList<>(userIds)); if (ObjectUtil.isNotEmpty(userList.getData())) { DataUtil.convertUserList(list, CollectionUtils.convertMap(userList.getData(), SysUser::getUserId)); } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchDeptServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchDeptServiceImpl.java index f47a06fb9..cf84ebb1a 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchDeptServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchDeptServiceImpl.java @@ -58,7 +58,7 @@ public class MchDeptServiceImpl extends ServiceImpl deptIds, MerchantTypeEnum mchType) { + public MchManageVo getFirstMch(List deptIds, List mchTypeList) { + List mchTypeStrList = mchTypeList.stream().map(MerchantTypeEnum::getType).toList(); + List merchantList = baseMapper.selectList(new LambdaQueryWrapper() - .eq(ObjectUtil.isNotEmpty(mchType), MchManageEntity::getTypes, mchType.getType()) + .in(ObjectUtil.isNotEmpty(mchTypeList), MchManageEntity::getTypes, mchTypeStrList) ); if (ObjectUtil.isEmpty(merchantList)) return null; for (Long id : deptIds) { for (MchManageEntity merchant : merchantList) { if (ObjectUtil.equals(merchant.getDeptId(), id)) { - if (ObjectUtil.isNotEmpty(mchType)) { - if (ObjectUtil.equals(merchant.getTypes(), mchType.getType())) { + if (ObjectUtil.isNotEmpty(mchTypeStrList)) { + if (mchTypeStrList.contains(merchant.getTypes())) { return BeanUtils.toBean(merchant, MchManageVo.class); } } else { @@ -300,13 +302,13 @@ public class MchManageServiceImpl extends ServiceImpl mchTypeList) { List parentDeptIdList = remoteDeptService.getParentDeptList(deptId).getData(); if (ObjectUtil.isEmpty(parentDeptIdList)) { return null; } List deptIds = parentDeptIdList.stream().map(SysDept::getDeptId).toList(); - return getFirstMch(deptIds, mchType); + return getFirstMch(deptIds, mchTypeList); } /** diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/thrid/WalletThirdZyServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/thrid/WalletThirdZyServiceImpl.java index 913e279d5..110fe12d3 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/thrid/WalletThirdZyServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/thrid/WalletThirdZyServiceImpl.java @@ -116,7 +116,7 @@ public class WalletThirdZyServiceImpl implements WalletThirdZyService { public void syncAllDept(Long deptId, Boolean isDel) { MchManageDto dto = new MchManageDto(); if (ObjectUtil.isNotEmpty(deptId)) { - MchManageVo mchManageVo = mchManageService.getFirstMchByDeptId(deptId, MerchantTypeEnum.CANTEEN); + MchManageVo mchManageVo = mchManageService.getFirstMchByDeptId(deptId, List.of(MerchantTypeEnum.OTHER_CANTEEN, MerchantTypeEnum.CANTEEN)); if (ObjectUtil.isNotEmpty(mchManageVo)) { dto.setDeptId(mchManageVo.getDeptId()); } @@ -269,7 +269,7 @@ public class WalletThirdZyServiceImpl implements WalletThirdZyService { log.error("|{}|syncAllUserGroup用户没有自动创建钱包权限|{}|", TAG, JSONUtil.toJsonStr(v)); continue; } - MchManageVo mch = mchManageService.getFirstMchByDeptId(v.getDeptId(), MerchantTypeEnum.CANTEEN); + MchManageVo mch = mchManageService.getFirstMchByDeptId(v.getDeptId(), List.of(MerchantTypeEnum.OTHER_CANTEEN, MerchantTypeEnum.CANTEEN)); // 查询是在商户下 if (ObjectUtil.isEmpty(mch)) { log.error("|{}|syncAllUserGroup用户部门商户id为空WalletManageVo|{}|", TAG, JSONUtil.toJsonStr(v));