From 8b5f776f1a34955450ec01c42fc8fc91233e30cd Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Fri, 15 Aug 2025 17:28:20 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E8=B6=85=E5=B8=82=E8=B4=AD=E7=89=A9?= =?UTF-8?q?=E5=8D=A1=E6=94=AF=E4=BB=98=E3=80=81=E9=80=89=E6=8B=A9=E9=92=B1?= =?UTF-8?q?=E5=8C=85=E3=80=81=E7=A7=B0=E9=87=8D=E5=95=86=E5=93=81=E5=B0=8F?= =?UTF-8?q?=E6=95=B0=E7=B2=BE=E5=BA=A6=E4=B8=8D=E5=A4=9F=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/constant/order/HardPayTypeEnum.java | 7 +- .../bsd/pjcloud/hard/api/utils/Drawing2D.java | 2 +- .../hard/api/vo/order/HardOrderVo.java | 8 ++ .../hard/service/HardInvoiceService.java | 12 --- .../service/impl/HardInvoiceServiceImpl.java | 25 ++++- .../impl/order/HardOrderServiceImpl.java | 94 +++++++++++++------ .../impl/sync/HardSyncServiceImpl.java | 4 +- .../api/feign/RemoteMqttEventService.java | 2 +- .../mqtt/controller/MqttEventController.java | 9 +- .../wallet/api/entity/WalletManageEntity.java | 1 + .../wallet/api/feign/RemoteWalletService.java | 4 + .../controller/WalletManageController.java | 10 ++ 12 files changed, 125 insertions(+), 53 deletions(-) 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 3f0e31176..20d56f2b4 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 @@ -28,6 +28,7 @@ public enum HardPayTypeEnum { ALI_SELF_QR_CODE_PAY("11", "支付宝付款码支付"), ZYY("12", "中医院"), RMYY("13", "人民医院"), + CSXFK("14", "超市消费卡"), ; private final String type; private final String description; @@ -42,7 +43,8 @@ public enum HardPayTypeEnum { WECHANT_SELF_QR_CODE_PAY, ALI_SELF_QR_CODE_PAY, ZYY, - RMYY + RMYY, + CSXFK ); public static final List isNotWalletPay = List.of( @@ -62,7 +64,8 @@ public enum HardPayTypeEnum { public static final List isOffline = List.of( CASH, ZYY, - RMYY + RMYY, + CSXFK ); public static HardPayTypeEnum valueOfByType(String type) { diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/utils/Drawing2D.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/utils/Drawing2D.java index 7feaafd52..7672a7581 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/utils/Drawing2D.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/utils/Drawing2D.java @@ -25,7 +25,7 @@ public class Drawing2D { * static const mm80_Old = 500; * static const mm80 = 570; */ - private final int canvasWidth = 340; + private final int canvasWidth = 365; private final int canvasHeight = 200; private int currentWidth = canvasWidth; diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardOrderVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardOrderVo.java index 4b0420411..815aea19c 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardOrderVo.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardOrderVo.java @@ -4,6 +4,8 @@ import com.bsd.pjcloud.admin.api.vo.base.BaseUserDeptInterface; import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; import com.bsd.pjcloud.hard.api.vo.base.BaseHardInterface; import com.bsd.pjcloud.wallet.api.vo.base.BaseMchInterface; +import com.bsd.pjcloud.wallet.api.vo.base.BaseWalletInterface; +import com.bsd.pjcloud.wallet.api.vo.base.BaseWalletTypeInterface; import lombok.Data; import java.util.List; @@ -61,4 +63,10 @@ public class HardOrderVo extends HardOrderEntity implements BaseUserDeptInterfac private Long afterSaleId; private String afterSaleNo; + + /** + * 钱包相关 + */ + private String walletTypeUniqueCode; + } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardInvoiceService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardInvoiceService.java index dc9478916..624b7f6bc 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardInvoiceService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardInvoiceService.java @@ -13,31 +13,21 @@ public interface HardInvoiceService extends IService { /** * 生成发票 - * @param order - * @return 订单详情 */ String generateInvoice(HardOrderEntity order); /** * 生成发票 - * @param order 订单详情 - * @param code 取消码 - * @return */ String generateInvoice(HardOrderEntity order, String code); /** * 生成发票图片 - * @param orderId - * @return */ HardInvoiceVo generateInvoice(Long orderId); /** * 打印成功通知 - * @param orderId - * @param historyId - * @return */ Boolean printInvoice(Long orderId, Long historyId); @@ -45,8 +35,6 @@ public interface HardInvoiceService extends IService { /** * 根据订单信息打印 - * @param order - * @return */ Boolean printByOrder(HardOrderEntity order); } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardInvoiceServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardInvoiceServiceImpl.java index 01318a0b2..ec0d4bcd9 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardInvoiceServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardInvoiceServiceImpl.java @@ -39,9 +39,12 @@ import com.bsd.pjcloud.hard.service.HardManagerService; import com.bsd.pjcloud.hard.service.HardOrderService; import com.bsd.pjcloud.mqtt.api.feign.RemoteMqttEventService; import com.bsd.pjcloud.mqtt.dto.hard.HardPrintMsg; +import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; import com.bsd.pjcloud.wallet.api.feign.RemoteMchService; +import com.bsd.pjcloud.wallet.api.feign.RemoteWalletService; import com.bsd.pjcloud.wallet.api.utils.WalletDataUtil; import com.bsd.pjcloud.wallet.api.vo.MchManageVo; +import com.bsd.pjcloud.wallet.api.vo.WalletManageVo; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.mock.web.MockMultipartFile; @@ -83,6 +86,7 @@ public class HardInvoiceServiceImpl extends ServiceImpl walletResult = remoteWalletService.getWallet(dto.getUserId(), WalletTypeEnum.EAT); - wallet = Optional.of(walletResult).map(R::getData).orElseThrow(() -> new RuntimeException("用户钱包不存在")); + if (ObjectUtil.isNotEmpty(dto.getWalletId()) && ObjectUtil.equals(dto.getSysType(), HardTypeEnum.SUPERMARKET)) { + R walletResult = remoteWalletService.getWalletById(dto.getWalletId()); + wallet = Optional.of(walletResult).map(R::getData).orElseThrow(() -> new RuntimeException("用户钱包不存在")); + } else { + if (ObjectUtil.isEmpty(mch.getDefaultWalletTypeId())) { + if (dto.getSysType().equals(HardTypeEnum.CANTEEN)) { + R walletResult = remoteWalletService.getWallet(dto.getUserId(), WalletTypeEnum.EAT); + wallet = Optional.of(walletResult).map(R::getData).orElseThrow(() -> new RuntimeException("用户钱包不存在")); + } else { + R walletResult = remoteWalletService.getWallet(dto.getUserId(), WalletTypeEnum.PAY); + wallet = Optional.of(walletResult).map(R::getData).orElseThrow(() -> new RuntimeException("用户钱包不存在")); + } } else { - R walletResult = remoteWalletService.getWallet(dto.getUserId(), WalletTypeEnum.PAY); + R walletResult = remoteWalletService.getWalletByWalletTypeId(dto.getUserId(), mch.getDefaultWalletTypeId()); wallet = Optional.of(walletResult).map(R::getData).orElseThrow(() -> new RuntimeException("用户钱包不存在")); } - } else { - R walletResult = remoteWalletService.getWalletByWalletTypeId(dto.getUserId(), mch.getDefaultWalletTypeId()); - wallet = Optional.of(walletResult).map(R::getData).orElseThrow(() -> new RuntimeException("用户钱包不存在")); } if (ObjectUtil.isEmpty(wallet)) { throw new RuntimeException("用户钱包不存在"); @@ -300,7 +309,7 @@ public class HardOrderServiceImpl extends ServiceImpl list, HardOrderDto dto) { if (ObjectUtil.isEmpty(list)) return; + RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); // 用户部门 - List userIds = list.stream().map(HardOrderVo::getUserId).filter(ObjectUtil::isNotEmpty).distinct().toList(); - if (ObjectUtil.isNotEmpty(userIds)) { - List userList = userService.getUserDeptByIds(new ArrayList<>(userIds)).getData(); - if (ObjectUtil.isNotEmpty(userList)) { - DataUtil.convertUserDeptList(list, CollectionUtils.convertMap(userList, UserVO::getUserId)); + CompletableFuture deptFuture = CompletableFuture.runAsync(() -> { + RequestContextHolder.setRequestAttributes(requestAttributes); + List userIds = list.stream().map(HardOrderVo::getUserId).filter(ObjectUtil::isNotEmpty).distinct().toList(); + if (ObjectUtil.isNotEmpty(userIds)) { + List userList = userService.getUserDeptByIds(new ArrayList<>(userIds)).getData(); + if (ObjectUtil.isNotEmpty(userList)) { + DataUtil.convertUserDeptList(list, CollectionUtils.convertMap(userList, UserVO::getUserId)); + } } - } + }); // 商户 - List mchIds = list.stream().map(HardOrderVo::getMerchantId).filter(ObjectUtil::isNotEmpty).distinct().toList(); - if (ObjectUtil.isNotEmpty(mchIds)) { - R> mchList = remoteMchService.getByIds(mchIds); - if (ObjectUtil.isNotEmpty(mchList.getData())) { - WalletDataUtil.convertMchList(list, CollectionUtils.convertMap(mchList.getData(), MchManageVo::getId)); + CompletableFuture mchFuture = CompletableFuture.runAsync(() -> { + RequestContextHolder.setRequestAttributes(requestAttributes); + List mchIds = list.stream().map(HardOrderVo::getMerchantId).filter(ObjectUtil::isNotEmpty).distinct().toList(); + if (ObjectUtil.isNotEmpty(mchIds)) { + R> mchList = remoteMchService.getByIds(mchIds); + if (ObjectUtil.isNotEmpty(mchList.getData())) { + WalletDataUtil.convertMchList(list, CollectionUtils.convertMap(mchList.getData(), MchManageVo::getId)); + } } - } + }); // 设备 - List hardIds = list.stream().map(HardOrderVo::getHardId).filter(ObjectUtil::isNotEmpty).distinct().toList(); - if (ObjectUtil.isNotEmpty(mchIds)) { - HardManagerDto hardManagerDto = new HardManagerDto(); - hardManagerDto.setIds(hardIds); - List hardList = hardManagerMapper.list(hardManagerDto); - if (ObjectUtil.isNotEmpty(hardList)) { - HardUtil.convertHardList(list, CollectionUtils.convertMap(hardList, HardManagerEntity::getId)); + CompletableFuture deviceFuture = CompletableFuture.runAsync(() -> { + RequestContextHolder.setRequestAttributes(requestAttributes); + List hardIds = list.stream().map(HardOrderVo::getHardId).filter(ObjectUtil::isNotEmpty).distinct().toList(); + if (ObjectUtil.isNotEmpty(hardIds)) { + HardManagerDto hardManagerDto = new HardManagerDto(); + hardManagerDto.setIds(hardIds); + List hardList = hardManagerMapper.list(hardManagerDto); + if (ObjectUtil.isNotEmpty(hardList)) { + HardUtil.convertHardList(list, CollectionUtils.convertMap(hardList, HardManagerEntity::getId)); + } } - } + }); + // 钱包 + CompletableFuture walletFuture = CompletableFuture.runAsync(() -> { + RequestContextHolder.setRequestAttributes(requestAttributes); + List walletIds = list.stream().map(HardOrderVo::getWalletId).filter(ObjectUtil::isNotEmpty).distinct().toList(); + if (ObjectUtil.isNotEmpty(walletIds)) { + List walletList = remoteWalletService.getWalletByIds(walletIds).getData(); + Map walletMap = CollectionUtils.convertMap(walletList, WalletManageVo::getId); + for (HardOrderVo v : list) { + WalletManageVo target = walletMap.get(v.getWalletId()); + if (ObjectUtil.isEmpty(target)) continue; + v.setWalletTypeUniqueCode(target.getWalletTypeUniqueCode()); + } + } + }); // 购物车 if (dto.getIsFindCarList()) { for (HardOrderVo v : list) { @@ -1098,5 +1131,6 @@ public class HardOrderServiceImpl extends ServiceImpl sendSupermarketClassifyChangeMsg(@RequestParam Long deptId); /** - * 超市分类变化 + * 超市同步 */ @NoToken @GetMapping("/mqtt/send-supermarket") diff --git a/pjcloud-mqtt/pjcloud-mqtt-biz/src/main/java/com/bsd/pjcloud/mqtt/controller/MqttEventController.java b/pjcloud-mqtt/pjcloud-mqtt-biz/src/main/java/com/bsd/pjcloud/mqtt/controller/MqttEventController.java index 675d2c9b4..53ee11dd2 100644 --- a/pjcloud-mqtt/pjcloud-mqtt-biz/src/main/java/com/bsd/pjcloud/mqtt/controller/MqttEventController.java +++ b/pjcloud-mqtt/pjcloud-mqtt-biz/src/main/java/com/bsd/pjcloud/mqtt/controller/MqttEventController.java @@ -102,15 +102,18 @@ public class MqttEventController { } /** - * 超市分类变化 + * 超市同步 */ @Inner @GetMapping("/send-supermarket") public R sendSupermarket(@RequestParam List deptIdList) { - if (ObjectUtil.isNotEmpty(deptIdList)) return R.failed(false); + if (ObjectUtil.isEmpty(deptIdList)) return R.failed(false); for (Long v : deptIdList) { MqttBaseDto dto = new MqttBaseDto<>(); - if (ObjectUtil.isNotEmpty(v)) dto.setMerchantDeptId(v); + if (ObjectUtil.isNotEmpty(v)) { + mqttEventService.getTopicParamsByUserDeptId(dto, v); + dto.setMerchantDeptId(v); + } dto.setAction(MqttActionEnum.SUPERMARKET); mqttEventService.defaultAction(dto); } diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletManageEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletManageEntity.java index ce49532a0..a05fe259d 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletManageEntity.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletManageEntity.java @@ -121,6 +121,7 @@ public class WalletManageEntity extends Model { @Schema(description = "修改人") private String updateBy; + /** * 修改时间 */ diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java index efa1c8c18..eae2620a9 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java @@ -32,6 +32,10 @@ public interface RemoteWalletService { @GetMapping("/wallet-manage/get-wallet-by-id") R getWalletById(@RequestParam Long walletId); + @NoToken + @GetMapping("/wallet-manage/get-wallet-by-ids") + R> getWalletByIds(@RequestParam List walletIds); + @NoToken @GetMapping("/wallet-manage/get-wallet-by-phone") R getWalletByUserPhone(@RequestParam String phone, @RequestParam WalletTypeEnum walletTypeCode); diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java index 866c2e96d..eae9312ca 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java @@ -108,6 +108,16 @@ public class WalletManageController { return R.ok(wallet); } + @Inner + @GetMapping("/get-wallet-by-ids") + public R> getWalletByIds(@RequestParam List walletIds) { + WalletManageDto dto = new WalletManageDto(); + dto.setWalletIds(walletIds); + List wallet = walletManageService.scopeList(dto, null); + if (ObjectUtil.isEmpty(wallet)) return R.failed("钱包不存在"); + return R.ok(wallet); + } + @Inner @GetMapping("/get-wallet-by-phone") public R getWalletByUserPhone(@RequestParam String phone, @RequestParam WalletTypeEnum walletTypeCode) {