package com.nuvole.poscom.api; import com.alibaba.fastjson.JSONObject; import com.nuvole.common.domain.result.CommonResult; import com.nuvole.poscom.config.PoscomConfig; import com.nuvole.poscom.config.PoscomPrintData; import com.nuvole.poscom.config.TempletParams; import com.nuvole.poscom.util.PoscomRequest; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.digest.DigestUtils; import java.util.Calendar; import java.util.HashMap; import java.util.Map; /** * @Description 佳博云打印机接口 * @Author ZHAOXL * @Date 2024/3/6 16:24 * @Version 1.0 */ @Slf4j public class PoscomService { /** * 添加打印机 * @param deviceID* 终端编号。 * @param deviceName* 设备名称,最大64位数据长度。 * @param grpID 分组 ID 。 * @return CommonResult * @Author ZHAOXL * @Date 2024/3/6 16:53 * @Version 1.0 */ public static CommonResult addDev(String deviceID, String deviceName, Integer grpID) { Map params = new HashMap(); String reqTime = String.valueOf(Calendar.getInstance().getTimeInMillis()); params.put("reqTime", reqTime); String securityCode = DigestUtils.md5Hex(PoscomConfig.memberCode + reqTime + PoscomConfig.apiKey + deviceID); params.put("securityCode", securityCode); params.put("memberCode", PoscomConfig.memberCode); params.put("deviceID", deviceID); params.put("devName", deviceName); if (grpID != null) { params.put("grpID", grpID + ""); } log.debug("=====请求参数 START=====\r\n" + "---> adddev <---\r\n" + params + "\r\n=====请求参数 END====="); String result = PoscomRequest.sendPost("http://api.poscom.cn/apisc/adddev", params); log.debug("=====请求返回 START=====\r\n" + result + "\r\n=====请求返回 END====="); JSONObject resultObject = JSONObject.parseObject(result); return new CommonResult(resultObject); } /** * 打印机切换播报类型 * @param deviceID* 终端编号。 * @param voiceType* 语音类型。0 真人语音,1 滴滴语音,2 不自动播放新订单,真人语音,3 不自动播放新订单,滴滴语音。 * @return * @Author ZHAOXL * @Date 2024/3/7 15:48 * @Version 1.0 */ public static CommonResult setVoiceType(String deviceID, String voiceType) { Map params = new HashMap(); String reqTime = String.valueOf(Calendar.getInstance().getTimeInMillis()); params.put("reqTime", reqTime); String securityCode = DigestUtils.md5Hex(PoscomConfig.memberCode + reqTime + PoscomConfig.apiKey + deviceID); params.put("securityCode", securityCode); params.put("memberCode", PoscomConfig.memberCode); params.put("deviceID", deviceID); params.put("voiceType", voiceType); log.debug("=====请求参数 START=====\r\n" + "---> setVoiceType <---\r\n" + params + "\r\n=====请求参数 END====="); String result = PoscomRequest.sendPost("http://api.poscom.cn/apisc/setVoiceType", params); log.debug("=====请求返回 START=====\r\n" + result + "\r\n=====请求返回 END====="); JSONObject resultObject = JSONObject.parseObject(result); return new CommonResult(resultObject); } /** * 删除打印机 * @param deviceID* 终端编号。 * @return CommonResult * @Author ZHAOXL * @Date 2024/3/7 9:47 * @Version 1.0 */ public static CommonResult delDev(String deviceID) { Map params = new HashMap(); String reqTime = String.valueOf(Calendar.getInstance().getTimeInMillis()); params.put("reqTime", reqTime); String securityCode = DigestUtils.md5Hex(PoscomConfig.memberCode + reqTime + PoscomConfig.apiKey + deviceID); params.put("securityCode", securityCode); params.put("memberCode", PoscomConfig.memberCode); params.put("deviceID", deviceID); log.debug("=====请求参数 START=====\r\n" + "---> deldev <---\r\n" + params + "\r\n=====请求参数 END====="); String result = PoscomRequest.sendPost("http://api.poscom.cn/apisc/deldev", params); log.debug("=====请求返回 START=====\r\n" + result + "\r\n=====请求返回 END====="); JSONObject resultObject = JSONObject.parseObject(result); return new CommonResult(resultObject); } /** * 指定模板打印 * @param deviceID* 终端编号。 * @param templetParams* 模板参数 * @return CommonResult * @Author ZHAOXL * @Date 2024/3/7 10:19 * @Version 1.0 */ public static CommonResult templetPrint(String deviceID, TempletParams templetParams) { Map params = new HashMap(); String reqTime = String.valueOf(Calendar.getInstance().getTimeInMillis()); params.put("reqTime", reqTime); String securityCode = DigestUtils.md5Hex(PoscomConfig.memberCode + deviceID + reqTime + PoscomConfig.apiKey); params.put("securityCode", securityCode); params.put("memberCode", PoscomConfig.memberCode); params.put("deviceID", deviceID); params.put("templetID", PoscomConfig.templetId); String tData = JSONObject.toJSONString(templetParams); params.put("tData", tData); params.put("charset","1"); //Default:1, 1:GB18030, 2:GB2312, 3:GBK, 4:UTF-8, 5:Unicode, 6:ISO8859-1, 7:BIG5 params.put("msgNo",""); params.put("reprint","0"); params.put("multi","0"); params.put("times",""); params.put("token", ""); log.debug("=====请求参数 START=====\r\n" + "---> templetPrint <---\r\n" + params + "\r\n=====请求参数 END====="); String result = PoscomRequest.sendPost("http://api.poscom.cn/apisc/templetPrint", params); log.debug("=====请求返回 START=====\r\n" + result + "\r\n=====请求返回 END====="); JSONObject resultObject = JSONObject.parseObject(result); return new CommonResult(resultObject); } /** * 发送语音到打印机 * @param* 终端编号。 * @param* 语音内容。 * @return * @Author ZHAOXL * @Date 2024/3/7 10:29 * @Version 1.0 */ public static CommonResult sendVoice(String deviceID, String voice) { Map params = new HashMap(); String reqTime = String.valueOf(Calendar.getInstance().getTimeInMillis()); params.put("reqTime", reqTime); String securityCode = DigestUtils.md5Hex(PoscomConfig.memberCode + deviceID + reqTime + PoscomConfig.apiKey); params.put("securityCode", securityCode); params.put("memberCode", PoscomConfig.memberCode); params.put("deviceID", deviceID); params.put("voice", voice); params.put("token", ""); log.debug("=====请求参数 START=====\r\n" + "---> sendVoice <---\r\n" + params + "\r\n=====请求参数 END====="); String result = PoscomRequest.sendPost("http://api.poscom.cn/apisc/sendVoice", params); log.debug("=====请求返回 START=====\r\n" + result + "\r\n=====请求返回 END====="); JSONObject resultObject = JSONObject.parseObject(result); return new CommonResult(resultObject); } public static CommonResult sendMsg(String deviceID) { Map params = new HashMap(); String reqTime = String.valueOf(Calendar.getInstance().getTimeInMillis()); params.put("reqTime", reqTime); String securityCode = DigestUtils.md5Hex(PoscomConfig.memberCode + deviceID + reqTime + reqTime + PoscomConfig.apiKey); params.put("securityCode", securityCode); params.put("memberCode", PoscomConfig.memberCode); params.put("deviceID", deviceID); //-----票据打印机 格式类型:2 params.put("mode", "2"); params.put("msgDetail", PoscomPrintData.ReceiptData2); //-----票据打印机 格式类型:2 params.put("charset","1"); //Default:1, 1:GB18030, 2:GB2312, 3:GBK, 4:UTF-8, 5:Unicode, 6:ISO8859-1, 7:BIG5 params.put("msgNo", reqTime); log.debug("=====请求参数 START=====\r\n" + "---> sendMsg <---\r\n" + params + "\r\n=====请求参数 END====="); String result = PoscomRequest.sendPost("http://api.poscom.cn/apisc/sendMsg", params); log.debug("=====请求返回 START=====\r\n" + result + "\r\n=====请求返回 END====="); JSONObject resultObject = JSONObject.parseObject(result); return new CommonResult(resultObject); } public static CommonResult queryState(String deviceID) { Map params = new HashMap(); String reqTime = String.valueOf(Calendar.getInstance().getTimeInMillis()); params.put("reqTime", reqTime); String securityCode = DigestUtils.md5Hex(PoscomConfig.memberCode + reqTime + PoscomConfig.apiKey + reqTime); params.put("securityCode", securityCode); params.put("memberCode", PoscomConfig.memberCode); params.put("msgNo", reqTime); log.debug("=====请求参数 START=====\r\n" + "---> sendMsg <---\r\n" + params + "\r\n=====请求参数 END====="); String result = PoscomRequest.sendPost("http://api.poscom.cn/apisc/queryState", params); log.debug("=====请求返回 START=====\r\n" + result + "\r\n=====请求返回 END====="); JSONObject resultObject = JSONObject.parseObject(result); return new CommonResult(resultObject); } }