package com.dpkj.modules.autoReplyPrint.controller; import com.alibaba.fastjson.JSONObject; import com.dpkj.common.exception.RRException; import com.dpkj.common.vo.Result; import com.dpkj.modules.autoReplyPrint.request.ReceiptPrintRequest; import com.dpkj.modules.autoReplyPrint.service.ImagePrintService; import com.dpkj.modules.autoReplyPrint.service.impl.TemplateService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.thymeleaf.util.StringUtils; import javax.annotation.Resource; /** * 小票打印机控制层 * * @author 石头人 * @version 1.0 * @since 2025-03-10 9:29:22 */ @RestController @RequestMapping("/receipt") public class ReceiptPrintController { @Resource(name = "USBImagePrint") private ImagePrintService usbImagePrintService; @Resource private TemplateService templateService; @PostMapping("/print") private Result print(@Validated @RequestBody ReceiptPrintRequest request){ String devName = "VID:0x0FE6,PID:0x811E"; // 采用默认的devName,不进行入参传值了 StringBuilder filePath = new StringBuilder(request.getFileDir()); // // 校验是否选中了模板,如果没选中模板的话则不需要另外生成了 if ( !StringUtils.isEmpty(request.getTemplateName()) && !StringUtils.isEmpty(request.getFileDir())){ String templateFillData = request.getTemplateFillData(); if ( !StringUtils.isEmpty(templateFillData)){ byte[] image = templateService.generateReceiptImage( JSONObject.parseObject(request.getTemplateFillData()), request.getTemplateName(), request.getWidth(), request.getHeight(), filePath); } }else { throw new RRException("模板渲染错误"); } usbImagePrintService.imagePrintFromPath(devName, request.getWidth(), request.getHeight(), filePath.toString(), 1, 0); return Result.ok(); } }