From 32341ef253fa6273ebb9f6ce888a66133edfc544 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Wed, 19 Mar 2025 20:16:40 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=89=93=E5=8D=B0=E6=9C=BA=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/common/utils/manage/print_manage.dart | 23 +++++++++++++++---- lib/common/utils/sync/sync_print_tool.dart | 14 ++++++----- .../widgets/order/mixin/order_mixin.dart | 8 +++++-- lib/pages/order_history/controller.dart | 2 +- lib/pages/order_history/view.dart | 8 ++++--- 5 files changed, 38 insertions(+), 17 deletions(-) diff --git a/lib/common/utils/manage/print_manage.dart b/lib/common/utils/manage/print_manage.dart index 9199414..2289a40 100644 --- a/lib/common/utils/manage/print_manage.dart +++ b/lib/common/utils/manage/print_manage.dart @@ -5,6 +5,8 @@ import 'package:get/get.dart'; import 'package:pj_supermarket_cloud/common/index.dart'; class PrintManage extends BaseFacilityManage { + static const String _tag = "打印机管理"; + USBPrinterManager? manager; CapabilityProfile? profile; int paperSizeWidthMM = PaperSizeWidth.mm80; @@ -25,8 +27,13 @@ class PrintManage extends BaseFacilityManage { if (ObjectUtil.isEmpty(target)) return false; profile = await CapabilityProfile.load(); manager = USBPrinterManager(target!); - final res = await manager!.connect(); - return res.value == 1; + try { + await manager?.connect(); + return true; + } catch (e) { + logger.e("|$_tag|打开打印机失败error|$e|"); + return false; + } } Future printImg(String img) async { @@ -43,11 +50,17 @@ class PrintManage extends BaseFacilityManage { profile!, ); List bytes = []; + bytes += generator.feed(2); bytes += generator.image(image!); - bytes += generator.feed(1); + bytes += generator.feed(2); bytes += generator.cut(); - final res = await manager!.writeBytes(bytes); - return res.value == 1; + try { + await manager!.writeBytes(bytes); + return true; + } catch (e) { + logger.e("|$_tag|打印机失败error|$e|"); + return false; + } } @override diff --git a/lib/common/utils/sync/sync_print_tool.dart b/lib/common/utils/sync/sync_print_tool.dart index 56875e8..498bc33 100644 --- a/lib/common/utils/sync/sync_print_tool.dart +++ b/lib/common/utils/sync/sync_print_tool.dart @@ -1,3 +1,5 @@ +import 'dart:convert'; + import 'package:common_utils/common_utils.dart'; import 'package:get/get.dart'; @@ -14,8 +16,8 @@ abstract class SyncPrintTool { required String historyId, required String pic, }) async { - final app = Get.find(); - final printHistoryDao = app.dataBase.getPrintHistoryDao; + final appC = Get.find(); + final printHistoryDao = appC.dataBase.getPrintHistoryDao; final saveObj = PrintHistoryEntity( orderId: androidOrderId, serviceOrderId: orderId, @@ -35,9 +37,9 @@ abstract class SyncPrintTool { logger.i("|$_tag|检查打印,正在打印中"); return; } - final app = Get.find(); - final printHistoryDao = app.dataBase.getPrintHistoryDao; - final printFacility = app.printManage; + final appC = Get.find(); + final printHistoryDao = appC.dataBase.getPrintHistoryDao; + final printFacility = appC.printManage; try { // 检查有没有需要打印的 final list = await printHistoryDao.getAll(PrintStatus.NONE.name); @@ -72,7 +74,7 @@ abstract class SyncPrintTool { if (!isPrint) { v.status = PrintStatus.ERROR; await printHistoryDao.edit(v); - throw Error(); + throw Exception("|$_tag|打印失败params|${v.toJson()}|"); } // 更新本地数据库 v.status = PrintStatus.SUCCESS; diff --git a/lib/common/widgets/order/mixin/order_mixin.dart b/lib/common/widgets/order/mixin/order_mixin.dart index 55c5952..c2c56ae 100644 --- a/lib/common/widgets/order/mixin/order_mixin.dart +++ b/lib/common/widgets/order/mixin/order_mixin.dart @@ -377,8 +377,12 @@ mixin OrderMixin { // 获取商品的描述信息 String getProductDesc() { String desc = ""; - for (var e in shopCardList) { - desc += "${e.productName}x${e.productNumber};"; + for (final v in shopCardList) { + if (v.nature == ProductNature.DEFAULT) { + desc += "${v.productName}x${v.productNumber};"; + } else if (v.nature == ProductNature.WEIGHT) { + desc += "${v.productName}x${v.productWidget}/kg;"; + } } return desc; } diff --git a/lib/pages/order_history/controller.dart b/lib/pages/order_history/controller.dart index b382bb3..0c5549d 100644 --- a/lib/pages/order_history/controller.dart +++ b/lib/pages/order_history/controller.dart @@ -228,7 +228,7 @@ class OrderHistoryController extends GetxController { final data = await HardApi.generateInvoice(pa); if (data == null) throw Error(); if (ObjectUtil.isEmpty(data.historyId) || ObjectUtil.isEmpty(data.pic)) { - throw Error(); + throw Exception("服务端生成发票失败"); } await SyncPrintTool.addTask( orderId: v.serviceUniqueCode, diff --git a/lib/pages/order_history/view.dart b/lib/pages/order_history/view.dart index 585c43e..6975f7d 100644 --- a/lib/pages/order_history/view.dart +++ b/lib/pages/order_history/view.dart @@ -134,9 +134,9 @@ class OrderHistoryPage extends GetView { fixedWidth: 150.w, ), DataColumn2( - label: Text('菜品名称'), + label: Text('商品名称'), headingRowAlignment: MainAxisAlignment.center, - fixedWidth: 220.w, + fixedWidth: 400.w, ), DataColumn2( label: Text('总价'), @@ -189,7 +189,9 @@ class OrderHistoryPage extends GetView { DataCell( Text( v.productDesc ?? "未知商品", - textAlign: TextAlign.center, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.ellipsis, ).center(), ), DataCell(