Merge branch 'rsm' of https://e.coding.net/rosydev/jx-callback into rsm
This commit is contained in:
@@ -54,7 +54,7 @@ const (
|
|||||||
signSound, signSoundEnd = "<sound>", "</sound>" // 声音结束标签
|
signSound, signSoundEnd = "<sound>", "</sound>" // 声音结束标签
|
||||||
|
|
||||||
// GPRS通讯说明,打印机识别二进制码
|
// GPRS通讯说明,打印机识别二进制码
|
||||||
hexSignBROrEXE = "0a"
|
hexSignBROrEXE = "0a" // 换行
|
||||||
hexSignCenter = "1b6101" // 居中打印
|
hexSignCenter = "1b6101" // 居中打印
|
||||||
hexSignLeft = "1b6100" // 恢复居左打印
|
hexSignLeft = "1b6100" // 恢复居左打印
|
||||||
hexSignRight = "1b6102" // 居右打印
|
hexSignRight = "1b6102" // 居右打印
|
||||||
@@ -368,8 +368,8 @@ func buildMsg(printMsg *model.PrintMsg) (data []byte, err error) {
|
|||||||
)
|
)
|
||||||
//写入数据
|
//写入数据
|
||||||
orderNoHexH, orderNoHexL = int2h8l8(int64(orderNo))
|
orderNoHexH, orderNoHexL = int2h8l8(int64(orderNo))
|
||||||
// 将数据与模板组装
|
|
||||||
|
|
||||||
|
// 将数据与模板组装
|
||||||
printDataGBK, _ := jxutils.Utf8ToGbk([]byte(replaceContentOther(content)))
|
printDataGBK, _ := jxutils.Utf8ToGbk([]byte(replaceContentOther(content)))
|
||||||
printData = hex.EncodeToString(printDataGBK)
|
printData = hex.EncodeToString(printDataGBK)
|
||||||
printData = replaceContent(printData, printMsg)
|
printData = replaceContent(printData, printMsg)
|
||||||
@@ -474,7 +474,7 @@ func replaceContent(content string, printMsg *model.PrintMsg) (result string) {
|
|||||||
result = strings.ReplaceAll(result, byteSignQrRight, hexSignQrRight+hexSignQr+hexLenqr+"00")
|
result = strings.ReplaceAll(result, byteSignQrRight, hexSignQrRight+hexSignQr+hexLenqr+"00")
|
||||||
result = strings.ReplaceAll(result, byteSignQrRightE, hexSignQrEnd)
|
result = strings.ReplaceAll(result, byteSignQrRightE, hexSignQrEnd)
|
||||||
}
|
}
|
||||||
// 声音
|
// 固定模板输出语音
|
||||||
if strings.Contains(result, byteSignSound) && strings.Contains(result, byteSignSoundE) {
|
if strings.Contains(result, byteSignSound) && strings.Contains(result, byteSignSoundE) {
|
||||||
if sounds := regexpSound.FindStringSubmatch(result); len(sounds) > 0 {
|
if sounds := regexpSound.FindStringSubmatch(result); len(sounds) > 0 {
|
||||||
sound := sounds[1]
|
sound := sounds[1]
|
||||||
@@ -492,16 +492,60 @@ func replaceContent(content string, printMsg *model.PrintMsg) (result string) {
|
|||||||
}
|
}
|
||||||
hexPrefix, _ := jxutils.Utf8ToGbk([]byte(soundPrefix))
|
hexPrefix, _ := jxutils.Utf8ToGbk([]byte(soundPrefix))
|
||||||
hexPrefixStr := hex.EncodeToString(hexPrefix)
|
hexPrefixStr := hex.EncodeToString(hexPrefix)
|
||||||
realSound := hexPrefixStr + sound
|
|
||||||
|
// 将语音包转换为十六进制
|
||||||
|
voice := ""
|
||||||
|
for _, v := range strings.Split(sound, "2c") {
|
||||||
|
soundNum, _ := hex.DecodeString(v) // 十六进制转字符串
|
||||||
|
intSound, _ := strconv.ParseInt(string(soundNum), 10, 64)
|
||||||
|
int16Sound := strconv.FormatInt(intSound, 16)
|
||||||
|
voice += int16Sound
|
||||||
|
}
|
||||||
|
globals.SugarLogger.Debug("voice============", voice)
|
||||||
|
|
||||||
|
realSound := hexPrefixStr + voice
|
||||||
allLen := fmt.Sprintf("%x", (len("fd001a0101")+len(realSound))/2)
|
allLen := fmt.Sprintf("%x", (len("fd001a0101")+len(realSound))/2)
|
||||||
if len(allLen) < 2 {
|
if len(allLen) < 2 {
|
||||||
allLen = "0" + allLen
|
allLen = "0" + allLen
|
||||||
}
|
}
|
||||||
|
globals.SugarLogger.Debug("realSound============", realSound)
|
||||||
|
globals.SugarLogger.Debug("allLen============", allLen)
|
||||||
|
|
||||||
soundLenH, soundLenX := int2h8l8(int64((len(realSound) + len("0101")) / 2))
|
soundLenH, soundLenX := int2h8l8(int64((len(realSound) + len("0101")) / 2))
|
||||||
|
globals.SugarLogger.Debug("result1============", result)
|
||||||
result = strings.ReplaceAll(result, byteSignSound, hexSignSound+allLen+"fd"+soundLenH+soundLenX+"0100"+hexPrefixStr)
|
result = strings.ReplaceAll(result, byteSignSound, hexSignSound+allLen+"fd"+soundLenH+soundLenX+"0100"+hexPrefixStr)
|
||||||
|
globals.SugarLogger.Debug("result2============", result)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 自动合成语音功能
|
||||||
|
//if strings.Contains(result, byteSignSound) && strings.Contains(result, byteSignSoundE) {
|
||||||
|
// if sounds := regexpSound.FindStringSubmatch(result); len(sounds) > 0 {
|
||||||
|
// sound := sounds[1]
|
||||||
|
// if printer, _ := dao.GetPrinter(dao.GetDB(), printMsg.PrintNo); printer != nil {
|
||||||
|
// //先把结束标签消了
|
||||||
|
// result = strings.ReplaceAll(result, byteSignSoundE, "")
|
||||||
|
// //fd 固定
|
||||||
|
// //001a (声音数据长度高八位低八位)
|
||||||
|
// //0101 固定
|
||||||
|
// soundPrefix := ""
|
||||||
|
// if printer.Sound != "" {
|
||||||
|
// soundPrefix = "[v" + utils.Int2Str(printer.Volume*2) + "]" + printer.Sound
|
||||||
|
// } else {
|
||||||
|
// soundPrefix = "[v" + utils.Int2Str(printer.Volume*2) + "]"
|
||||||
|
// }
|
||||||
|
// hexPrefix, _ := jxutils.Utf8ToGbk([]byte(soundPrefix))
|
||||||
|
// hexPrefixStr := hex.EncodeToString(hexPrefix)
|
||||||
|
// realSound := hexPrefixStr + sound
|
||||||
|
// allLen := fmt.Sprintf("%x", (len("fd001a0101")+len(realSound))/2)
|
||||||
|
// if len(allLen) < 2 {
|
||||||
|
// allLen = "0" + allLen
|
||||||
|
// }
|
||||||
|
// soundLenH, soundLenX := int2h8l8(int64((len(realSound) + len("0101")) / 2))
|
||||||
|
// result = strings.ReplaceAll(result, byteSignSound, hexSignSound+allLen+"fd"+soundLenH+soundLenX+"0100"+hexPrefixStr)
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package event
|
package event
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/hex"
|
||||||
"fmt"
|
"fmt"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
|
"strconv"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -10,8 +12,8 @@ func TestPrintMsg(t *testing.T) {
|
|||||||
|
|
||||||
msg := &model.PrintMsg{
|
msg := &model.PrintMsg{
|
||||||
ModelIDCULD: model.ModelIDCULD{},
|
ModelIDCULD: model.ModelIDCULD{},
|
||||||
PrintNo: "1111",
|
PrintNo: "20220707000002",
|
||||||
Content: "\t<sound>您有新订单啦!</sound>\t\t<center><b>京西果园</b></center><br><br>\t\t<center>手机买菜上京西</center><br><center>极速到家送惊喜</center><br>--------------------------------<br>下单时间: 2021-08-27 21:57:26<br>预计送达: 2021-08-27 22:57:26<br>订单编号: 93154441730211100<br><br><b>美团外卖#19</b><br><qrc>93154441730211100</qrc><br>客户: 李大梦(先生)<br>电话: 15987200340<br>地址: 北浦伟业广场-2号楼 (伟业广场B区)@#云南省楚雄彝族自治州楚雄市鹿城镇伟业广场<br><br>客户备注: <br><b>【如遇缺货】: 缺货时电话与我沟通</b><br><br><br>商品明细: <br>品名 数量 单价 小计<br>--------------------------------<br>【自由拼】洗净红提160g/盒<br> x1 ¥9.20 ¥9.20<br>【果切】 牛奶木瓜约300g/份<br> x1 ¥9.70 ¥9.70<br>【自由拼】严选香蕉果切180g/盒<br> x1 ¥8.80 ¥8.80<br>[网红果切]乌梅小番茄25g/个<br> x10 ¥0.80 ¥8.00<br>[现剥]甜石榴籽约250g/份(1个)<br> x1 ¥3.50 ¥3.50<br>【爆品特惠】新鲜脆甜半斤哈密瓜 哈蜜瓜果切一盒250g/盒(230~260g)<br> x1 ¥0.01 ¥0.01<br>【爆品特惠】新鲜脆甜半斤哈密瓜 哈蜜瓜果切一盒250g/盒(230~260g)<br> x1 ¥8.60 ¥8.60<br><br>共7种16件商品<br>--------------------------------<br><center><hb>商品质量问题请联系:</hb></center><br><center><hb>京西果园·果切·水果捞(果果屋店):15841011397</hb></center><br><br>更多信息请关注官方微信: 京西菜市<br><br><br>--------------------------------<br>--------------------------------<br><br>\n",
|
Content: "\t<sound>01,01,01</sound>\t\t<center><b>京西果园</b></center><br><br>\t\t<center>手机买菜上京西</center><br><center>极速到家送惊喜</center><br>--------------------------------<br>下单时间: 2021-08-27 21:57:26<br>预计送达: 2021-08-27 22:57:26<br>订单编号: 93154441730211100<br><br><b>美团外卖#19</b><br><qrc>93154441730211100</qrc><br>客户: 李大梦(先生)<br>电话: 15987200340<br>地址: 北浦伟业广场-2号楼 (伟业广场B区)@#云南省楚雄彝族自治州楚雄市鹿城镇伟业广场<br><br>客户备注: <br><b>【如遇缺货】: 缺货时电话与我沟通</b><br><br><br>商品明细: <br>品名 数量 单价 小计<br>--------------------------------<br>【自由拼】洗净红提160g/盒<br> x1 ¥9.20 ¥9.20<br>【果切】 牛奶木瓜约300g/份<br> x1 ¥9.70 ¥9.70<br>【自由拼】严选香蕉果切180g/盒<br> x1 ¥8.80 ¥8.80<br>[网红果切]乌梅小番茄25g/个<br> x10 ¥0.80 ¥8.00<br>[现剥]甜石榴籽约250g/份(1个)<br> x1 ¥3.50 ¥3.50<br>【爆品特惠】新鲜脆甜半斤哈密瓜 哈蜜瓜果切一盒250g/盒(230~260g)<br> x1 ¥0.01 ¥0.01<br>【爆品特惠】新鲜脆甜半斤哈密瓜 哈蜜瓜果切一盒250g/盒(230~260g)<br> x1 ¥8.60 ¥8.60<br><br>共7种16件商品<br>--------------------------------<br><center><hb>商品质量问题请联系:</hb></center><br><center><hb>京西果园·果切·水果捞(果果屋店):15841011397</hb></center><br><br>更多信息请关注官方微信: 京西菜市<br><br><br>--------------------------------<br>--------------------------------<br><br>\n",
|
||||||
OrderNo: 2022071109,
|
OrderNo: 2022071109,
|
||||||
Status: 0,
|
Status: 0,
|
||||||
Comment: "",
|
Comment: "",
|
||||||
@@ -22,3 +24,15 @@ func TestPrintMsg(t *testing.T) {
|
|||||||
fmt.Println("data=", string(data))
|
fmt.Println("data=", string(data))
|
||||||
fmt.Println("err=", err)
|
fmt.Println("err=", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 十六进制转字符串
|
||||||
|
func TestDC(t *testing.T) {
|
||||||
|
str := "3031"
|
||||||
|
str2, _ := hex.DecodeString(str)
|
||||||
|
fmt.Println(string(str2))
|
||||||
|
}
|
||||||
|
|
||||||
|
// 十进制字符串转十六进制
|
||||||
|
func Test10Two16(t *testing.T) {
|
||||||
|
fmt.Println(strconv.FormatInt(11, 16)) // 2 to 10
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user