From 8c4225b2b9f9fd8c0206e24e132bf6b5ff0fa7bc Mon Sep 17 00:00:00 2001 From: GYJ <1157756119@qq.com> Date: Tue, 11 Mar 2025 14:44:01 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E5=BC=82=E5=B8=B8=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/czg/exception/CzgControllerAdvice.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cash-common/cash-common-api-config/src/main/java/com/czg/exception/CzgControllerAdvice.java b/cash-common/cash-common-api-config/src/main/java/com/czg/exception/CzgControllerAdvice.java index 1a2cb3af..1d434ece 100644 --- a/cash-common/cash-common-api-config/src/main/java/com/czg/exception/CzgControllerAdvice.java +++ b/cash-common/cash-common-api-config/src/main/java/com/czg/exception/CzgControllerAdvice.java @@ -124,7 +124,7 @@ public class CzgControllerAdvice { */ @ExceptionHandler(ValidateException.class) public CzgResult handleValidateException(ValidateException ex) { - setErrorLog(ex); + log.error(ex.getMessage()); return CzgResult.failure(CzgRespCode.PARAM_ERROR.getCode(), ex.getMessage()); } From 278b3930ce8d89b8a53f246c57c7ef1f36a86d68 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, 11 Mar 2025 14:52:08 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E6=89=93=E5=8D=B0=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/czg/service/order/print/FeiPrinter.java | 1 - .../com/czg/service/order/print/PrinterHandler.java | 4 ++-- .../java/com/czg/service/order/print/PrinterImpl.java | 11 +++++++---- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/print/FeiPrinter.java b/cash-service/order-service/src/main/java/com/czg/service/order/print/FeiPrinter.java index 9c84c7c6..491b2f0d 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/print/FeiPrinter.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/print/FeiPrinter.java @@ -48,7 +48,6 @@ public class FeiPrinter extends PrinterHandler implements PrinterImpl { private final PrintSignLabel printSignLabel = new PrintSignLabel() .setBr("
") - .setCut("") .setF(new String[]{"", ""}) .setL(new String[]{"", ""}) diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterHandler.java b/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterHandler.java index 1e6d190e..1ece9690 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterHandler.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterHandler.java @@ -266,7 +266,7 @@ public abstract class PrinterHandler { item.setProductName("【临】" + item.getProductName()); } } - boolean isGift = item.getPackAmount().compareTo(BigDecimal.ZERO) == 0; + boolean isGift = item.getIsGift() != null && item.getIsGift() == 1; if (isGift && !item.getProductName().contains("【赠】")) { item.setProductName("【赠】" + item.getProductName()); } @@ -335,7 +335,7 @@ public abstract class PrinterHandler { it.setProductName("【临】%s".formatted(it.getProductName())); } it.setPackAmount(it.getPackAmount() == null ? BigDecimal.ZERO : it.getPackAmount()); - boolean isGift = it.getPackAmount().compareTo(BigDecimal.ZERO) == 0; + boolean isGift = it.getIsGift() != null && it.getIsGift() == 1; if (isGift) { it.setProductName("【赠】%s".formatted(it.getProductName())); } diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterImpl.java index 5284da0a..b7918091 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterImpl.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterImpl.java @@ -170,7 +170,8 @@ public interface PrinterImpl { data.append(signLabelInfo.br); // data.append(""); // data.append("
"); - data.append(getFormatLabel("品名 数量 小计", signLabelInfo.s)) + // 18个空格 12 + data.append(getFormatLabel("品名 数量 小计", signLabelInfo.s)) .append(signLabelInfo.br); // data.append("品名 数量 小计
"); data.append(getFormatLabel("--------------------------------", signLabelInfo.s)) @@ -178,7 +179,8 @@ public interface PrinterImpl { // data.append("--------------------------------
"); for (OrderDetail detail : detailList) { String number = detail.getNum().stripTrailingZeros().toPlainString(); - String row = getRow(detail.getProductName(), "", number, toPlainStr(detail.getPayAmount().stripTrailingZeros().toPlainString()), 20, 0, 3, 6); + String row = getRow(detail.getProductName(), "", number, + toPlainStr(detail.getPayAmount().stripTrailingZeros().toPlainString()), 23, 0, 5, 4); data.append(row); if (StrUtil.isNotBlank(detail.getSkuName())) { data.append(getFormatLabel(StrUtil.format("规格:{}", detail.getSkuName()), signLabelInfo.s)) @@ -301,10 +303,11 @@ public interface PrinterImpl { // builder.append("").append(skuName).append("
"); } } else { - builder.append(getFormatLabel(StrUtil.format("{} x ", productName), signLabelInfo.bold)); + builder.append(getFormatLabel(StrUtil.format("{} x {}", productName, number.stripTrailingZeros().toPlainString()), signLabelInfo.l)) + .append(signLabelInfo.br); // builder.append("").append(productName).append(" x ").append(number).append("
"); if (StrUtil.isNotBlank(skuName)) { - builder.append(getFormatLabel(skuName, signLabelInfo.bold)) + builder.append(getFormatLabel(skuName, signLabelInfo.l)) .append(signLabelInfo.br); // builder.append("").append(skuName).append("
"); } From efb1ff7f754d1ede8d2925b04e88038260682a55 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, 11 Mar 2025 15:05:39 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E6=89=93=E5=8D=B0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/czg/order/dto/PrintMachineLogDTO.java | 153 ++++++++++++++++ .../com/czg/order/entity/PrintMachineLog.java | 160 ++++++++++++++++ .../order/service/PrintMachineLogService.java | 14 ++ .../order/mapper/PrintMachineLogMapper.java | 14 ++ .../czg/service/order/print/FeiPrinter.java | 3 +- .../service/order/print/PrinterHandler.java | 3 + .../impl/PrintMachineLogServiceImpl.java | 171 ++++++++++++++++++ .../mapper/PrintMachineLogMapper.xml | 7 + 8 files changed, 523 insertions(+), 2 deletions(-) create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/order/dto/PrintMachineLogDTO.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/order/entity/PrintMachineLog.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/order/service/PrintMachineLogService.java create mode 100644 cash-service/order-service/src/main/java/com/czg/service/order/mapper/PrintMachineLogMapper.java create mode 100644 cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PrintMachineLogServiceImpl.java create mode 100644 cash-service/order-service/src/main/resources/mapper/PrintMachineLogMapper.xml diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/dto/PrintMachineLogDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/order/dto/PrintMachineLogDTO.java new file mode 100644 index 00000000..e6125926 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/dto/PrintMachineLogDTO.java @@ -0,0 +1,153 @@ + +package com.czg.order.dto; + +import java.io.Serializable; +import java.time.LocalDateTime; +import com.alibaba.fastjson2.annotation.JSONField; +import java.io.Serial; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 店铺小票打印记录 实体类。 + * + * @author zs + * @since 2025-03-11 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class PrintMachineLogDTO implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + private Long id; + + /** + * 打印机类型 本地打印机-local USB打印机-USB 云打印机-network + */ + private String connectionType; + + /** + * 打印机品牌 云想印 = yxyPrinter飞鹅 = fePrinter 本地 = local USB = printer + */ + private String contentType; + + /** + * 打印小票 标签-label 出品-kitchen 小票-cash + */ + private String subType; + + /** + * 打印机名称 + */ + private String name; + + /** + * IP地址/打印机编号 + */ + private String address; + + /** + * 端口/打印机秘钥 + */ + private String port; + + /** + * 小票尺寸 58mm 80mm + */ + private String receiptSize; + + /** + * 分类打印 0-所以 1-部分分类 2-部分商品 + */ + private String classifyPrint; + + /** + * 桌台打印 0-所有 1-部分 + */ + private String tablePrint; + + /** + * 打印数量 c1m1^2=顾客+商家[2张] m1^1=商家[1张] c1^1顾客[1张] c2m1^3=顾客2+商家1[3张] + */ + private String printQty; + + /** + * 打印方式 normal-普通出单 one-一菜一品 callTicket-排队取号 + */ + private String printMethod; + + /** + * 打印类型 JSON数组字符串数据 1-确认退款单 2-交班单 3-排队取号,如:[1,2,3] + */ + private String printType; + + /** + * 打印票据 0-全部打印 1-仅厨房 2-仅前台 + */ + private String printReceipt; + + /** + * 打印内容 + */ + private String printContent; + + /** + * 店铺id + */ + private String shopId; + + /** + * 业务类型 + */ + private String bizType; + + /** + * 打印人id + */ + private Long createUserId; + + /** + * 打印人名称 + */ + private String createUserName; + + /** + * 打印任务创建时间 + */ + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** + * 打印任务id,用于复查打印状态,云想印=orderId + */ + private String taskId; + + /** + * 实际打印时间 + */ + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime printTime; + + /** + * 失败标识 1-是 0-否 + */ + private Integer failFlag; + + /** + * 响应代码 + */ + private String respCode; + + /** + * 响应消息 + */ + private String respMsg; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/entity/PrintMachineLog.java b/cash-common/cash-common-service/src/main/java/com/czg/order/entity/PrintMachineLog.java new file mode 100644 index 00000000..4e3a1e8a --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/entity/PrintMachineLog.java @@ -0,0 +1,160 @@ +package com.czg.order.entity; + +import com.mybatisflex.annotation.Column; +import com.mybatisflex.annotation.Id; +import com.mybatisflex.annotation.KeyType; +import com.mybatisflex.annotation.Table; +import java.io.Serializable; +import java.time.LocalDateTime; + +import java.io.Serial; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 店铺小票打印记录 实体类。 + * + * @author zs + * @since 2025-03-11 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("tb_print_machine_log") +public class PrintMachineLog implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @Id(keyType = KeyType.Auto) + private Long id; + + /** + * 打印机类型 本地打印机-local USB打印机-USB 云打印机-network + */ + private String connectionType; + + /** + * 打印机品牌 云想印 = yxyPrinter飞鹅 = fePrinter 本地 = local USB = printer + */ + private String contentType; + + /** + * 打印小票 标签-label 出品-kitchen 小票-cash + */ + private String subType; + + /** + * 打印机名称 + */ + private String name; + + /** + * IP地址/打印机编号 + */ + private String address; + + /** + * 端口/打印机秘钥 + */ + private String port; + + /** + * 小票尺寸 58mm 80mm + */ + private String receiptSize; + + /** + * 分类打印 0-所以 1-部分分类 2-部分商品 + */ + private String classifyPrint; + + /** + * 桌台打印 0-所有 1-部分 + */ + private String tablePrint; + + /** + * 打印数量 c1m1^2=顾客+商家[2张] m1^1=商家[1张] c1^1顾客[1张] c2m1^3=顾客2+商家1[3张] + */ + private String printQty; + + /** + * 打印方式 normal-普通出单 one-一菜一品 callTicket-排队取号 + */ + private String printMethod; + + /** + * 打印类型 JSON数组字符串数据 1-确认退款单 2-交班单 3-排队取号,如:[1,2,3] + */ + private String printType; + + /** + * 打印票据 0-全部打印 1-仅厨房 2-仅前台 + */ + private String printReceipt; + + /** + * 打印内容 + */ + private String printContent; + + /** + * 店铺id + */ + private String shopId; + + /** + * 业务类型 + */ + private String bizType; + + /** + * 打印人id + */ + private Long createUserId; + + /** + * 打印人名称 + */ + private String createUserName; + + /** + * 打印任务创建时间 + */ + @Column(onInsertValue = "now()") + private LocalDateTime createTime; + + /** + * 打印任务id,用于复查打印状态,云想印=orderId + */ + private String taskId; + + /** + * 实际打印时间 + */ + private LocalDateTime printTime; + + /** + * 失败标识 1-是 0-否 + */ + private Integer failFlag; + + /** + * 响应代码 + */ + private String respCode; + + /** + * 响应消息 + */ + private String respMsg; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/service/PrintMachineLogService.java b/cash-common/cash-common-service/src/main/java/com/czg/order/service/PrintMachineLogService.java new file mode 100644 index 00000000..f4888899 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/service/PrintMachineLogService.java @@ -0,0 +1,14 @@ +package com.czg.order.service; + +import com.mybatisflex.core.service.IService; +import com.czg.order.entity.PrintMachineLog; + +/** + * 店铺小票打印记录 服务层。 + * + * @author zs + * @since 2025-03-11 + */ +public interface PrintMachineLogService extends IService { + +} diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/mapper/PrintMachineLogMapper.java b/cash-service/order-service/src/main/java/com/czg/service/order/mapper/PrintMachineLogMapper.java new file mode 100644 index 00000000..3a8e17a5 --- /dev/null +++ b/cash-service/order-service/src/main/java/com/czg/service/order/mapper/PrintMachineLogMapper.java @@ -0,0 +1,14 @@ +package com.czg.service.order.mapper; + +import com.mybatisflex.core.BaseMapper; +import com.czg.order.entity.PrintMachineLog; + +/** + * 店铺小票打印记录 映射层。 + * + * @author zs + * @since 2025-03-11 + */ +public interface PrintMachineLogMapper extends BaseMapper { + +} diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/print/FeiPrinter.java b/cash-service/order-service/src/main/java/com/czg/service/order/print/FeiPrinter.java index 491b2f0d..c34eb68d 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/print/FeiPrinter.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/print/FeiPrinter.java @@ -67,8 +67,7 @@ public class FeiPrinter extends PrinterHandler implements PrinterImpl { String content = buildDishPrintData(false, getPickupNum(orderInfo), orderInfo.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")), orderDetail.getProductName(), orderDetail.getSkuName(), orderDetail.getNum(), remark, orderDetail.getProGroupInfo()); sendPrintRequest(machine.getAddress(), content, null,"1"); - - // shopPrintLogService.save(machine, "新订单", resp[0], resp[1]); // 可以解开注释用于日志存储 +// printMachineLogService.save(machine, "新订单", , ); } @Override diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterHandler.java b/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterHandler.java index 1ece9690..ef48af55 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterHandler.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/print/PrinterHandler.java @@ -17,6 +17,7 @@ import com.czg.order.entity.OrderDetail; import com.czg.order.entity.OrderInfo; import com.czg.order.service.OrderDetailService; import com.czg.order.service.OrderInfoService; +import com.czg.order.service.PrintMachineLogService; import com.czg.product.entity.ProdSku; import com.czg.product.entity.Product; import com.czg.product.service.ProdSkuService; @@ -59,6 +60,8 @@ public abstract class PrinterHandler { protected OrderInfoService orderInfoService; @Resource protected RedisService redisService; + @Resource + protected PrintMachineLogService printMachineLogService; @DubboReference protected SysParamsService sysParamsService; diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PrintMachineLogServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PrintMachineLogServiceImpl.java new file mode 100644 index 00000000..897bb500 --- /dev/null +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PrintMachineLogServiceImpl.java @@ -0,0 +1,171 @@ +package com.czg.service.order.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.map.MapProxy; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.thread.ThreadUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.czg.account.entity.PrintMachine; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.mybatisflex.core.query.QueryWrapper; +import com.mybatisflex.spring.service.impl.ServiceImpl; +import com.czg.order.entity.PrintMachineLog; +import com.czg.order.service.PrintMachineLogService; +import com.czg.service.order.mapper.PrintMachineLogMapper; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.Map; + +/** + * 店铺小票打印记录ServiceImpl + * + * @author tankaikai + * @since 2024-10-8 17:10 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class PrintMachineLogServiceImpl extends ServiceImpl implements PrintMachineLogService{ + + /** + * 保存打印记录 + * + * @param config 打印机配置 + * @param bizType 业务类型 + * @param printContent 打印内容 + * @param respJson 打印机响应结果 + */ + @Async + public void save(PrintMachine config, String bizType, String printContent, String respJson) { +// if (config == null) { +// return; +// } +// PrintMachineLog entity = new PrintMachineLog(); +// BeanUtil.copyProperties(config, entity); +// int failFlag = 0; +// String respCode = "0"; +// String respMsg = "打印中"; +// +// Map yxxStatusMap = MapUtil.builder(0, "离线(设备上线后自动补打)").put(1, "在线").put(2, "获取失败").put(3, "未激活").put(4, "设备已禁用").build(); +// // 云想印 +// if ("yxyPrinter".equals(config.getContentType())) { +// cn.hutool.json.JSONObject resp = JSONUtil.parseObj(respJson); +// int code = resp.getInt("code"); +// cn.hutool.json.JSONObject data = resp.getJSONObject("data").getJSONObject("data"); +// //设备状态,0: 离线, 1: 在线, 2: 获取失败, 3:未激活, 4:设备已禁用 +// int status = data.getInt("status"); +// if (code != 0) { +// failFlag = 1; +// respCode = code + ""; +// respMsg = resp.getStr("msg"); +// } else if (status != 1) { +// failFlag = 1; +// respCode = code + ""; +// +// respMsg = status + "_" + yxxStatusMap.get(status); +// } +// if (code == 0) { +// String taskId = resp.getJSONObject("data").getStr("orderId"); +// entity.setTaskId(taskId); +// } +// // 飞鹅云打印机暂时没有适配,先return不做打印记录 +// } else if ("fePrinter".equals(config.getContentType())) { +// cn.hutool.json.JSONObject resp = JSONUtil.parseObj(respJson); +// int ret = resp.getInt("ret"); +// if (ret != 0) { +// failFlag = 1; +// respCode = ret + ""; +// respMsg = resp.getStr("msg"); +// } else { +// String printOrderId = resp.getStr("data"); +// entity.setTaskId(printOrderId); +// } +// } else { +// // 其他打印机暂时没有适配,先return不做打印记录 +// return; +// } +// entity.setBizType(bizType); +//// entity.setCreateUserId(config.getCurrentUserId()); +//// entity.setCreateUserName(config.getCurrentUserName()); +//// if (StrUtil.isNotBlank(config.getCurrentUserNickName())) { +//// entity.setCreateUserName(StrUtil.concat(true, config.getCurrentUserNickName(), " | ", config.getCurrentUserName())); +//// } +// entity.setPrintContent(printContent); +// entity.setCreateTime(DateUtil.date().toLocalDateTime()); +// if (failFlag == 0) { +// entity.setPrintTime(entity.getCreateTime()); +// } +// entity.setFailFlag(failFlag); +// entity.setRespCode(respCode); +// entity.setRespMsg(respMsg); +// super.save(entity); +// +// // 云想印 +// if ("yxyPrinter".equals(config.getContentType())) { +// // 延迟3ms,复查打印状态 (用户可以根据设备信息查询到当前设备的在线情况(注:该接口只能提供参考,设备的离线状态是在设备离线3分钟后才会生效)) +// ThreadUtil.safeSleep(1000 * 5); +// String jsonStr = PrinterUtils.checkPrintStatus(config.getAddress(), entity.getTaskId()); +// cn.hutool.json.JSONObject resp = JSONUtil.parseObj(jsonStr); +// int code = resp.getInt("code"); +// if (code == 0) { +// cn.hutool.json.JSONObject data = resp.getJSONObject("data"); +// boolean status = data.containsKey("status"); +// if (!status) { +// return; +// } +// boolean success = data.getBool("status", false); +// if (entity.getFailFlag() == 0 && success) { +// entity.setFailFlag(0); +// entity.setRespMsg("打印成功"); +// entity.setPrintTime(entity.getCreateTime()); +// } else if (entity.getFailFlag() == 1 && success) { +// entity.setFailFlag(0); +// entity.setPrintTime(new Date()); +// entity.setRespMsg("打印成功"); +// // 如果设备在线 and 休眠5秒后查询结果是未打印,即视为设备已离线,云端3分钟后才会同步到离线信息 +// } else if (entity.getFailFlag() == 0 && !success) { +// entity.setFailFlag(1); +// entity.setPrintTime(null); +// entity.setRespMsg("0_离线(设备上线后自动补打)"); +// } else { +// entity.setFailFlag(1); +// entity.setPrintTime(null); +// entity.setRespMsg(StrUtil.concat(true, "打印失败,", "_", entity.getRespMsg())); +// } +// super.updateById(entity); +// } +// // 飞鹅云打印机 +// } else if ("fePrinter".equals(config.getContentType())) { +// ThreadUtil.safeSleep(1000 * 5); +// Boolean success = FeieyunPrintUtil.checkPrintStatus(entity.getTaskId()); +// if (success == null) { +// entity.setFailFlag(1); +// entity.setRespMsg("打印失败,未知错误"); +// } else if (success) { +// entity.setFailFlag(0); +// entity.setPrintTime(new Date()); +// entity.setRespMsg("打印成功"); +// } else { +// String msg = FeieyunPrintUtil.checkOnline(entity.getAddress()); +// if (msg.indexOf("在线,工作状态正常") > 0) { +// entity.setFailFlag(0); +// entity.setPrintTime(new Date()); +// entity.setRespMsg("打印成功"); +// } else { +// entity.setFailFlag(1); +// entity.setPrintTime(null); +// entity.setRespMsg(StrUtil.concat(true, "打印失败,", "_", msg)); +// } +// } +// super.updateById(entity); +// } + } + +} diff --git a/cash-service/order-service/src/main/resources/mapper/PrintMachineLogMapper.xml b/cash-service/order-service/src/main/resources/mapper/PrintMachineLogMapper.xml new file mode 100644 index 00000000..61c30b88 --- /dev/null +++ b/cash-service/order-service/src/main/resources/mapper/PrintMachineLogMapper.xml @@ -0,0 +1,7 @@ + + + + + From 91da9aa0de1b183978d82b16dceba1266570ce4e 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, 11 Mar 2025 15:17:00 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E8=A1=8C=E6=94=BF=E5=8C=BA=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/user/UserGeoController.java | 29 +++++++++++++ .../com/czg/account/service/GeoService.java | 2 + .../java/com/czg/account/vo/DistrictVo.java | 42 +++++++++++++++++++ cash-dependencies/pom.xml | 6 +++ cash-service/account-service/pom.xml | 4 ++ .../account/service/impl/GeoServiceImpl.java | 20 +++++++++ 6 files changed, 103 insertions(+) create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/account/vo/DistrictVo.java diff --git a/cash-api/account-server/src/main/java/com/czg/controller/user/UserGeoController.java b/cash-api/account-server/src/main/java/com/czg/controller/user/UserGeoController.java index a53f118a..960fd804 100644 --- a/cash-api/account-server/src/main/java/com/czg/controller/user/UserGeoController.java +++ b/cash-api/account-server/src/main/java/com/czg/controller/user/UserGeoController.java @@ -1,7 +1,11 @@ package com.czg.controller.user; import com.czg.account.service.GeoService; +import com.czg.account.vo.DistrictVo; import com.czg.resp.CzgResult; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.annotation.Resource; import jakarta.validation.constraints.NotEmpty; import org.springframework.web.bind.annotation.GetMapping; @@ -9,6 +13,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + /** * geo位置管理 * @author Administrator @@ -19,8 +25,31 @@ public class UserGeoController { @Resource private GeoService geoService; + /** + * 经纬度换取位置信息 + * @param lat 经度 + * @param lng 纬度 + * @return 位置西悉尼 + */ @GetMapping("/geocode") public CzgResult getAddress(@RequestParam @NotEmpty String lat, @RequestParam @NotEmpty String lng) { return CzgResult.success(geoService.getAddress(lat, lng)); } + + /** + * 根据市换取所有下属行政区 + */ + @GetMapping("/district") + public CzgResult> district(String keywords) throws JsonProcessingException { + String districtJson = geoService.district(keywords,null); + ObjectMapper mapper = new ObjectMapper(); + JsonNode jsonNode = mapper.readTree(districtJson); + JsonNode districts = jsonNode.get("districts"); + String text = districts.toString(); + List cityInfoList = mapper.readValue(text, mapper.getTypeFactory().constructCollectionType(List.class, DistrictVo.class)); + DistrictVo allCity = new DistrictVo(); + allCity.setName("全城"); + cityInfoList.addFirst(allCity); + return CzgResult.success(cityInfoList); + } } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/service/GeoService.java b/cash-common/cash-common-service/src/main/java/com/czg/account/service/GeoService.java index 4ca11f90..0d84ee6d 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/service/GeoService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/service/GeoService.java @@ -7,4 +7,6 @@ import jakarta.validation.constraints.NotEmpty; */ public interface GeoService { Object getAddress(@NotEmpty String lat, @NotEmpty String lng); + + String district(String keywords, String subdistrict); } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/vo/DistrictVo.java b/cash-common/cash-common-service/src/main/java/com/czg/account/vo/DistrictVo.java new file mode 100644 index 00000000..6ec835e5 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/vo/DistrictVo.java @@ -0,0 +1,42 @@ +package com.czg.account.vo; + +import lombok.Data; +import net.sourceforge.pinyin4j.PinyinHelper; +import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; +import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; +import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; +import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; + +import java.util.List; + +/** + * 行政区域返回vo + */ +@Data +public class DistrictVo { + private Object citycode; + private String adcode; + private String name; + private String center; + private String level; + private List districts; + + public String getNameAsPY() { + return getPinYin(name); + } + + public String getPinYin(String name){ + HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); + // 设置声调类型为WITH_TONE_MARK + format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); + // 设置拼音输出的大小写格式为小写 + format.setCaseType(HanyuPinyinCaseType.LOWERCASE); + String pinyin = ""; + try { + pinyin = PinyinHelper.toHanYuPinyinString(name,format , "", false); + } catch (BadHanyuPinyinOutputFormatCombination e) { + return pinyin; + } + return pinyin; + } +} diff --git a/cash-dependencies/pom.xml b/cash-dependencies/pom.xml index fcf77de3..a6ea4263 100644 --- a/cash-dependencies/pom.xml +++ b/cash-dependencies/pom.xml @@ -39,10 +39,16 @@ 2.8.3 3.5.3 3.8.0 + 2.5.1 + + com.belerweb + pinyin4j + ${pinyin.version} + com.czg cash-common-tools diff --git a/cash-service/account-service/pom.xml b/cash-service/account-service/pom.xml index 3b673379..ca3fe5b4 100644 --- a/cash-service/account-service/pom.xml +++ b/cash-service/account-service/pom.xml @@ -18,6 +18,10 @@ + + com.belerweb + pinyin4j + diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/GeoServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/GeoServiceImpl.java index aa4c6f56..390081b2 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/GeoServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/GeoServiceImpl.java @@ -1,14 +1,19 @@ package com.czg.service.account.service.impl; +import cn.hutool.http.HttpUtil; import com.alibaba.fastjson2.JSONObject; import com.czg.account.service.GeoService; import com.czg.exception.ApiNotPrintException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import io.seata.common.util.HttpClientUtil; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.web.client.RestClient; +import java.util.HashMap; +import java.util.Map; import java.util.Objects; /** @@ -40,6 +45,21 @@ public class GeoServiceImpl implements GeoService { } return jsonObject.getJSONObject("regeocode"); } + + @Override + public String district(String keywords, String subdistrict) { + Map param = new HashMap<>(); + //超掌柜生活-用户端 + param.put("key", "7a7f2e4790ea222660a027352ee3af39"); + param.put("keywords", keywords); + param.put("subdistrict", "1"); + if (StringUtils.isNotBlank(subdistrict)) { + param.put("subdistrict", "2"); + } + param.put("extensions", "base"); + String s = HttpUtil.get("https://restapi.amap.com/v3/config/district", param); + return s; + } } From 2cca091d38e5826e84ca51367c27a47d8f69b5bb 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, 11 Mar 2025 15:17:52 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E8=A1=8C=E6=94=BF=E5=8C=BA=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/czg/account/vo/DistrictVo.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/vo/DistrictVo.java b/cash-common/cash-common-service/src/main/java/com/czg/account/vo/DistrictVo.java index 6ec835e5..7cfaee55 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/vo/DistrictVo.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/vo/DistrictVo.java @@ -14,11 +14,26 @@ import java.util.List; */ @Data public class DistrictVo { + /** + * 城市代码 + */ private Object citycode; private String adcode; + /** + * 名称 + */ private String name; + /** + * 经纬度 + */ private String center; + /** + * 级别 + */ private String level; + /** + * 行政区信息 + */ private List districts; public String getNameAsPY() { From b3849594f454e22303f73ed2ef6754aae051c2d0 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, 11 Mar 2025 15:20:20 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E8=A1=8C=E6=94=BF=E5=8C=BA=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 94ce06cd..e12e32e9 100644 --- a/pom.xml +++ b/pom.xml @@ -87,7 +87,11 @@ 2.10.0 test - + + com.belerweb + pinyin4j + 2.5.1 + From 38618c8906f623393e4b8633a4fccc20131de2ae Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Tue, 11 Mar 2025 15:24:20 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=20=E4=BC=98=E6=83=A0?= =?UTF-8?q?=E5=88=B8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/czg/order/dto/CheckOrderPay.java | 4 ++++ .../com/czg/order/service/OrderInfoService.java | 3 ++- .../order/service/impl/OrderInfoServiceImpl.java | 16 +++++++++++----- .../order/service/impl/PayServiceImpl.java | 2 +- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/dto/CheckOrderPay.java b/cash-common/cash-common-service/src/main/java/com/czg/order/dto/CheckOrderPay.java index 55a22ed4..6dc7d6d1 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/order/dto/CheckOrderPay.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/dto/CheckOrderPay.java @@ -33,6 +33,10 @@ public class CheckOrderPay implements Serializable { * 是否整单打包 */ private Integer allPack; + /** + * 用户端 使用 全打包 或者 全不打包 + */ + private Integer userAllPack; /** * 用餐人数 diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/service/OrderInfoService.java b/cash-common/cash-common-service/src/main/java/com/czg/order/service/OrderInfoService.java index de5ac211..f561fff6 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/order/service/OrderInfoService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/service/OrderInfoService.java @@ -30,6 +30,7 @@ public interface OrderInfoService extends IService { Page getOrderByPage(OrderInfoQueryDTO param); CzgResult getOrderDetails(Long orderId); + CzgResult getOrderByIdPrint(Long orderId); HistoryOrderVo historyOrder(Long orderId, String tableCode); @@ -50,7 +51,7 @@ public interface OrderInfoService extends IService { void processOrderDetails2(List orderDetails, Map prodCouponMap, BigDecimalDTO prodCouponAmount, BigDecimalDTO totalAmount, BigDecimalDTO packAmount, - boolean isAllPack, boolean isVipPrice); + boolean isAllPack, Integer userAllPack, boolean isVipPrice); Boolean printOrder(Long shopId, OrderInfoPrintDTO orderInfoPrintDTO); diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java index d2285523..23af9534 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java @@ -291,7 +291,7 @@ public class OrderInfoServiceImpl extends ServiceImpl orderDetails, Map prodCouponMap, BigDecimalDTO prodCouponAmount, BigDecimalDTO totalAmount, BigDecimalDTO packAmount, - boolean isAllPack, boolean isVipPrice) { + boolean isAllPack, Integer userAllPack, boolean isVipPrice) { Map> detailMap = new HashMap<>(); for (OrderDetail detail : orderDetails) { detailMap.computeIfAbsent(detail.getProductId(), k -> new ArrayList<>()).add(detail); @@ -408,11 +408,17 @@ public class OrderInfoServiceImpl extends ServiceImpl Date: Tue, 11 Mar 2025 15:29:04 +0800 Subject: [PATCH 8/8] =?UTF-8?q?shopUser=E8=BF=94=E5=9B=9E=E5=BA=97?= =?UTF-8?q?=E9=93=BA=E6=8B=93=E5=B1=95=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../czg/account/dto/shopuser/ShopUserDetailDTO.java | 10 ++++++++++ .../account/service/impl/ShopUserServiceImpl.java | 10 ++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/shopuser/ShopUserDetailDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/shopuser/ShopUserDetailDTO.java index 669387d8..cc723185 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/shopuser/ShopUserDetailDTO.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/shopuser/ShopUserDetailDTO.java @@ -1,11 +1,14 @@ package com.czg.account.dto.shopuser; +import com.czg.account.entity.ShopExtend; import com.czg.account.entity.ShopInfo; import com.czg.account.entity.ShopUser; import lombok.Data; import lombok.EqualsAndHashCode; import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; /** * @author Administrator @@ -30,6 +33,13 @@ public class ShopUserDetailDTO extends ShopUser { */ private Long shopId; + /** + * 店铺信息 + */ private ShopInfo shopInfo; + /** + * 店铺拓展参数 + */ + private List shopExtendList = new ArrayList<>(); } diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopUserServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopUserServiceImpl.java index 6b82a1f9..b75fa9a5 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopUserServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopUserServiceImpl.java @@ -6,10 +6,7 @@ import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import com.czg.account.dto.shopuser.*; import com.czg.account.entity.*; -import com.czg.account.service.ShopActivateCouponRecordService; -import com.czg.account.service.ShopUserFlowService; -import com.czg.account.service.ShopUserService; -import com.czg.account.service.UserInfoService; +import com.czg.account.service.*; import com.czg.config.RedisCst; import com.czg.exception.ApiNotPrintException; import com.czg.resp.CzgResult; @@ -32,6 +29,7 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.math.RoundingMode; +import java.util.List; /** @@ -55,6 +53,8 @@ public class ShopUserServiceImpl extends ServiceImpl i private ShopActivateCouponRecordService shopActivateCouponRecordService; @Resource private ShopInfoMapper shopInfoMapper; + @Resource + private ShopExtendService shopExtendService; private ShopUser getUserInfo(Long shopId, Long shopUserId) { ShopUser shopUser = queryChain().eq(ShopUser::getShopId, shopId).eq(ShopUser::getId, shopUserId).one(); @@ -279,6 +279,8 @@ public class ShopUserServiceImpl extends ServiceImpl i shopUserDetailDTO.setShopName(shopInfo.getShopName()); shopUserDetailDTO.setShopId(shopInfo.getId()); shopUserDetailDTO.setShopInfo(shopInfo); + List shopExtends = shopExtendService.list(new QueryWrapper().eq(ShopExtend::getShopId, shopInfo.getId())); + shopUserDetailDTO.setShopExtendList(shopExtends); } return shopUserDetailDTO; }