2025-03-12 17:12:48 +08:00
package com.dpkj.modules.autoReplyPrint.controller ;
2025-03-14 16:31:53 +08:00
import com.alibaba.fastjson.JSONObject ;
import com.dpkj.common.exception.RRException ;
2025-03-12 17:12:48 +08:00
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 ;
2025-03-17 10:28:17 +08:00
import com.dpkj.modules.autoReplyPrint.vo.PrinterStatus ;
import lombok.extern.slf4j.Slf4j ;
2025-03-12 17:12:48 +08:00
import org.springframework.validation.annotation.Validated ;
import org.springframework.web.bind.annotation.* ;
2025-03-14 16:31:53 +08:00
import org.thymeleaf.util.StringUtils ;
2025-03-17 10:28:17 +08:00
import java.io.File ;
2025-03-12 17:12:48 +08:00
import javax.annotation.Resource ;
/ * *
* 小票打印机控制层
*
* @author < a href = " https://gitee.com/shi-chongli " > 石头人 < / a >
* @version 1 . 0
* @since 2025 - 03 - 10 9 : 29 : 22
* /
2025-03-17 10:28:17 +08:00
@Slf4j
2025-03-12 17:12:48 +08:00
@RestController
@RequestMapping ( " /receipt " )
public class ReceiptPrintController {
@Resource ( name = " USBImagePrint " )
private ImagePrintService usbImagePrintService ;
2025-03-14 16:31:53 +08:00
@Resource
private TemplateService templateService ;
2025-03-12 17:12:48 +08:00
@PostMapping ( " /print " )
private Result < Void > print ( @Validated @RequestBody ReceiptPrintRequest request ) {
String devName = " VID:0x0FE6,PID:0x811E " ; // 采用默认的devName, 不进行入参传值了
2025-03-17 10:28:17 +08:00
// 进行模板填充
String testData = " { \" hospitalName \" : \" 澜沧县中医医院 \" , \" registeTerminalName \" : \" 中国农业银行自助终端 \" , \" registeType \" : \" 自助挂号 \" , \" name \" : \" 刘博雅 \" , \" gender \" : \" 男 \" , \" age \" :28, \" birthDate \" : \" 1996-06-31 \" , \" cardNumber \" : \" 6221**********0731 \" , \" outpatientNumber \" : \" 2501150038 \" , \" department \" : \" 普外科门诊 \" , \" visitLevel \" : \" 普通号 \" , \" doctor \" : \" 普通门诊 \" , \" sequence \" : \" 1 \" , \" registerDate \" : \" 2025-01-15 \" , \" totalFee \" :4.00, \" paymentMethod \" : \" 微信扫码支付 \" , \" orderNumber \" : \" \" , \" transactionNumber \" : \" 2025011513090412092794szztzzj \" , \" qrCodeBase64_2base64Type_1_250_250 \" : \" maby this is a Base64 code data if has \" , \" terminalNumber \" : \" 12092794 \" , \" printTime \" : \" 2025-01-15 13:10:08 \" } " ;
2025-03-14 16:31:53 +08:00
StringBuilder filePath = new StringBuilder ( request . getFileDir ( ) ) ;
// 校验是否选中了模板,如果没选中模板的话则不需要另外生成了
if ( ! StringUtils . isEmpty ( request . getTemplateName ( ) ) & & ! StringUtils . isEmpty ( request . getFileDir ( ) ) ) {
2025-03-17 10:28:17 +08:00
byte [ ] image = templateService . generateReceiptImage ( JSONObject . parseObject ( testData ) , request . getTemplateName ( ) , request . getWidth ( ) , request . getHeight ( ) , filePath ) ;
2025-03-14 16:31:53 +08:00
} else {
throw new RRException ( " 模板渲染错误 " ) ;
}
2025-03-12 17:12:48 +08:00
usbImagePrintService . imagePrintFromPath ( devName ,
request . getWidth ( ) ,
request . getHeight ( ) ,
2025-03-14 16:31:53 +08:00
filePath . toString ( ) ,
2025-03-12 17:12:48 +08:00
1 ,
0 ) ;
2025-03-17 10:28:17 +08:00
// 删除图片
File file = new File ( filePath . toString ( ) ) ;
// 检查文件是否存在
if ( file . exists ( ) ) {
// 尝试删除文件
if ( file . delete ( ) ) {
log . info ( " 文件删除成功: " + filePath ) ;
} else {
log . info ( " 文件删除失败: " + filePath ) ;
}
} else {
log . info ( " 文件不存在: " + filePath ) ;
}
2025-03-12 17:12:48 +08:00
return Result . ok ( ) ;
}
2025-03-17 10:28:17 +08:00
@PostMapping ( " /getStatus " )
public Result < PrinterStatus > print ( ) {
String devName = " VID:0x0FE6,PID:0x811E " ; // 采用默认的devName, 不进行入参传值了
return Result . ok ( this . usbImagePrintService . getStatus ( devName ) ) ;
}
2025-03-12 17:12:48 +08:00
}