Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -17,5 +17,10 @@ public class OrderInfoPrintDTO{
|
|||||||
*/
|
*/
|
||||||
@NotNull(message = "id不为空")
|
@NotNull(message = "id不为空")
|
||||||
private Long id;
|
private Long id;
|
||||||
|
/**
|
||||||
|
* 0结算单 1退款单
|
||||||
|
*/
|
||||||
|
@NotNull(message = "打印类型不为空")
|
||||||
|
private Integer type;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,12 +5,14 @@ import cn.hutool.core.util.CharsetUtil;
|
|||||||
import cn.hutool.core.util.NumberUtil;
|
import cn.hutool.core.util.NumberUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.json.JSONArray;
|
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import com.alibaba.fastjson2.JSONArray;
|
||||||
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import com.czg.order.entity.OrderDetail;
|
import com.czg.order.entity.OrderDetail;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -87,7 +89,7 @@ public interface PrinterImpl {
|
|||||||
price = addSpace(price, b2);
|
price = addSpace(price, b2);
|
||||||
num = addSpace(num, b3);
|
num = addSpace(num, b3);
|
||||||
total = addSpace(total, b4);
|
total = addSpace(total, b4);
|
||||||
String otherStr = " %s%s %s".formatted(price, num, total);
|
String otherStr = " %s%s%s".formatted(price, num, total);
|
||||||
|
|
||||||
int titleByteLen = StrUtil.bytes(title, CharsetUtil.CHARSET_GBK).length;
|
int titleByteLen = StrUtil.bytes(title, CharsetUtil.CHARSET_GBK).length;
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
@@ -171,7 +173,7 @@ public interface PrinterImpl {
|
|||||||
// data.append("<OUT:15>");
|
// data.append("<OUT:15>");
|
||||||
// data.append("<BR>");
|
// data.append("<BR>");
|
||||||
// 18个空格 12
|
// 18个空格 12
|
||||||
data.append(getFormatLabel("品名 数量 小计", signLabelInfo.s))
|
data.append(getFormatLabel("品名 数量 小计 ", signLabelInfo.s))
|
||||||
.append(signLabelInfo.br);
|
.append(signLabelInfo.br);
|
||||||
// data.append("<S>品名 数量 小计</S><BR>");
|
// data.append("<S>品名 数量 小计</S><BR>");
|
||||||
data.append(getFormatLabel("--------------------------------", signLabelInfo.s))
|
data.append(getFormatLabel("--------------------------------", signLabelInfo.s))
|
||||||
@@ -180,7 +182,7 @@ public interface PrinterImpl {
|
|||||||
for (OrderDetail detail : detailList) {
|
for (OrderDetail detail : detailList) {
|
||||||
String number = detail.getNum().stripTrailingZeros().toPlainString();
|
String number = detail.getNum().stripTrailingZeros().toPlainString();
|
||||||
String row = getRow(detail.getProductName(), "", number,
|
String row = getRow(detail.getProductName(), "", number,
|
||||||
toPlainStr(detail.getPayAmount().stripTrailingZeros().toPlainString()), 23, 0, 5, 4);
|
toPlainStr(detail.getPayAmount().stripTrailingZeros().toPlainString()), 21, 0, 5, 6);
|
||||||
data.append(row);
|
data.append(row);
|
||||||
if (StrUtil.isNotBlank(detail.getSkuName())) {
|
if (StrUtil.isNotBlank(detail.getSkuName())) {
|
||||||
data.append(getFormatLabel(StrUtil.format("规格:{}", detail.getSkuName()), signLabelInfo.s))
|
data.append(getFormatLabel(StrUtil.format("规格:{}", detail.getSkuName()), signLabelInfo.s))
|
||||||
@@ -194,12 +196,15 @@ public interface PrinterImpl {
|
|||||||
if (!JSONUtil.isTypeJSONArray(proGroupInfo)) {
|
if (!JSONUtil.isTypeJSONArray(proGroupInfo)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
JSONArray subItems = JSONUtil.parseArray(proGroupInfo);
|
JSONArray subItems = com.alibaba.fastjson2.JSONArray.parseArray(proGroupInfo);
|
||||||
for (int i = 0; i < subItems.size(); i++) {
|
for (Object subItem : subItems) {
|
||||||
String proName = subItems.getJSONObject(i).getStr("proName");
|
JSONObject jsonObject = (JSONObject) subItem;
|
||||||
int qty = subItems.getJSONObject(i).getInt("number");
|
jsonObject.getJSONArray("goods").forEach(item -> {
|
||||||
String subRow = getRow(" - " + proName, "", qty + ".00", "0.00", 20, 0, 3, 6);
|
String proName = ((JSONObject) item).getString("proName");
|
||||||
data.append(subRow);
|
String qty = ((JSONObject) item).getString("number");
|
||||||
|
String subRow = getRow(" - " + proName, "", qty, "0.00", 21, 0, 5, 6);
|
||||||
|
data.append(subRow);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotNull(printInfoDTO.getDiscountAmount())) {
|
if (ObjectUtil.isNotNull(printInfoDTO.getDiscountAmount())) {
|
||||||
@@ -319,12 +324,16 @@ public interface PrinterImpl {
|
|||||||
// builder.append("<S><L>备注: ").append(note).append(" </L></S><BR>");
|
// builder.append("<S><L>备注: ").append(note).append(" </L></S><BR>");
|
||||||
}
|
}
|
||||||
if (!StrUtil.isBlank(proGroupInfo) && JSONUtil.isTypeJSONArray(proGroupInfo)) {
|
if (!StrUtil.isBlank(proGroupInfo) && JSONUtil.isTypeJSONArray(proGroupInfo)) {
|
||||||
JSONArray subItems = JSONUtil.parseArray(proGroupInfo);
|
JSONArray subItems = JSONArray.parseArray(proGroupInfo);
|
||||||
for (int i = 0; i < subItems.size(); i++) {
|
for (Object subItem : subItems) {
|
||||||
String proName = subItems.getJSONObject(i).getStr("proName");
|
JSONObject jsonObject = (JSONObject) subItem;
|
||||||
int qty = subItems.getJSONObject(i).getInt("number");
|
jsonObject.getJSONArray("goods").forEach(item -> {
|
||||||
builder.append(StrUtil.format("({}) x {}", proName, qty))
|
String proName = ((JSONObject) item).getString("proName");
|
||||||
.append(signLabelInfo.br);
|
String qty = ((JSONObject) item).getString("number -> 1");
|
||||||
|
builder.append(StrUtil.format("({}) x {}", proName, qty))
|
||||||
|
.append(signLabelInfo.br);
|
||||||
|
});
|
||||||
|
|
||||||
// builder.append("<CS:32>(").append(i + 1).append(")").append(proName).append(" x ").append(qty).append("</CS><BR>");
|
// builder.append("<CS:32>(").append(i + 1).append(")").append(proName).append(" x ").append(qty).append("</CS><BR>");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -390,7 +399,11 @@ public interface PrinterImpl {
|
|||||||
* @return 填充之后的字符串
|
* @return 填充之后的字符串
|
||||||
*/
|
*/
|
||||||
default String addSpace(String str, int size) {
|
default String addSpace(String str, int size) {
|
||||||
return StrUtil.fillAfter(str, ' ', size);
|
int len = str.length();
|
||||||
|
if (len < size) {
|
||||||
|
str = str + " ".repeat(size - len);
|
||||||
|
}
|
||||||
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -427,8 +440,20 @@ public interface PrinterImpl {
|
|||||||
* @return 添加间距的字符串
|
* @return 添加间距的字符串
|
||||||
*/
|
*/
|
||||||
default String titleAddSpace(String str, int b1) {
|
default String titleAddSpace(String str, int b1) {
|
||||||
int byteLen = StrUtil.bytes(str, CharsetUtil.CHARSET_GBK).length;
|
int k = 0;
|
||||||
return StrUtil.fillAfter(str, ' ', b1 - byteLen);
|
try {
|
||||||
|
k = str.getBytes("GBK").length;
|
||||||
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
str = str + " ".repeat(Math.max(0, b1 - k));
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
System.out.println("水煮肉片".length());
|
||||||
|
System.out.println( StrUtil.repeat(' ', 8));
|
||||||
|
System.out.println(StrUtil.fillAfter("水煮肉片", ' ', 21));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -706,6 +706,7 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|||||||
orderInfo.setSeatAmount(shopInfo.getTableFee().multiply(new BigDecimal(param.getSeatNum())));
|
orderInfo.setSeatAmount(shopInfo.getTableFee().multiply(new BigDecimal(param.getSeatNum())));
|
||||||
orderInfo.setSeatNum(param.getSeatNum());
|
orderInfo.setSeatNum(param.getSeatNum());
|
||||||
}
|
}
|
||||||
|
orderInfo.setTableCode(param.getTableCode());
|
||||||
orderInfo.setPlaceNum(param.getPlaceNum());
|
orderInfo.setPlaceNum(param.getPlaceNum());
|
||||||
orderInfo.setOriginAmount(param.getOriginAmount());
|
orderInfo.setOriginAmount(param.getOriginAmount());
|
||||||
orderInfo.setOrderAmount(BigDecimal.ZERO);
|
orderInfo.setOrderAmount(BigDecimal.ZERO);
|
||||||
|
|||||||
Reference in New Issue
Block a user