package com.sqx.modules.utils.fieYun; import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.databind.ObjectMapper; import com.sqx.modules.activity.service.ActivityService; import com.sqx.modules.activity.vo.ActivityOrderVO; import com.sqx.modules.activity.vo.ActivityVO; import com.sqx.modules.app.entity.UserEntity; import com.sqx.modules.app.service.UserService; import com.sqx.modules.common.service.CommonInfoService; import com.sqx.modules.coupon.entity.TbCoupon; import com.sqx.modules.coupon.entity.TbCouponUser; import com.sqx.modules.coupon.service.TbCouponService; import com.sqx.modules.goods.entity.GoodsShop; import com.sqx.modules.goods.service.GoodsShopService; import com.sqx.modules.order.entity.OrderGoods; import com.sqx.modules.order.entity.TbOrder; import com.sqx.modules.printInfo.entity.*; import com.sqx.modules.printInfo.service.PrintInfoService; import com.sqx.modules.printInfo.service.PrintInfoShopService; import com.sqx.modules.utils.fieYun.model.OrderForm; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang.StringUtils; import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.io.IOException; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @Component @Slf4j public class FeiYunUtils { private static ActivityService activityService; private static UserService userService; private static TbCouponService tbCouponService; private static GoodsShopService goodsShopService; private static CommonInfoService commonInfoService; private static PrintInfoShopService printInfoShopService; private static PrintInfoService printInfoService; @Autowired public void setActivityService(ActivityService activityService) { FeiYunUtils.activityService = activityService; } @Autowired public void setUserService(UserService userService) { FeiYunUtils.userService = userService; } @Autowired public void setTbCouponService(TbCouponService tbCouponService) { FeiYunUtils.tbCouponService = tbCouponService; } @Autowired public void setGoodsShopService(GoodsShopService goodsShopService) { FeiYunUtils.goodsShopService = goodsShopService; } @Autowired public void setCommonInfoService(CommonInfoService commonInfoService) { FeiYunUtils.commonInfoService = commonInfoService; } @Autowired public void setPrintInfoShopService(PrintInfoShopService printInfoShopService) { FeiYunUtils.printInfoShopService = printInfoShopService; } @Autowired public void setPrintInfoService(PrintInfoService printInfoService) { FeiYunUtils.printInfoService = printInfoService; } /** * 添加打印机接口 * * @param snlist 提示:打印机编号(必填) # 打印机识别码(必填) # 备注名称(选填) # 流量卡号码(选填),多台打印机请换行(\n)添加新打印机信息,每次最多100行(台)。 * @return 正确例子:{"msg":"ok","ret":0,"data":{"ok":["sn#key#remark#carnum","316500011#abcdefgh#快餐前台"],"no":["316500012#abcdefgh#快餐前台#13688889999 (错误:识别码不正确)"]},"serverExecutedTime":3} * 错误:{"msg":"参数错误 : 该帐号未注册.","ret":-2,"data":null,"serverExecutedTime":37} */ public static String addprinter(String snlist) { String URL = commonInfoService.findOne(325).getValue(); String USER = commonInfoService.findOne(326).getValue(); String UKEY = commonInfoService.findOne(327).getValue(); //通过POST请求,发送打印信息到服务器 RequestConfig requestConfig = RequestConfig.custom() .setSocketTimeout(30000)//读取超时 .setConnectTimeout(30000)//连接超时 .build(); CloseableHttpClient httpClient = HttpClients.custom() .setDefaultRequestConfig(requestConfig) .build(); HttpPost post = new HttpPost(URL); List nvps = new ArrayList(); nvps.add(new BasicNameValuePair("user", USER)); String STIME = String.valueOf(System.currentTimeMillis() / 1000); nvps.add(new BasicNameValuePair("stime", STIME)); nvps.add(new BasicNameValuePair("sig", signature(USER, UKEY, STIME))); nvps.add(new BasicNameValuePair("apiname", "Open_printerAddlist"));//固定值,不需要修改 nvps.add(new BasicNameValuePair("printerContent", snlist)); CloseableHttpResponse response = null; String result = null; try { post.setEntity(new UrlEncodedFormEntity(nvps, "utf-8")); response = httpClient.execute(post); int statecode = response.getStatusLine().getStatusCode(); if (statecode == 200) { HttpEntity httpentity = response.getEntity(); if (httpentity != null) { result = EntityUtils.toString(httpentity); } } } catch (Exception e) { e.printStackTrace(); } finally { try { if (response != null) { response.close(); } } catch (IOException e) { e.printStackTrace(); } try { post.abort(); } catch (Exception e) { e.printStackTrace(); } try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } return result; } /** * 修改打印机接口 * * @param snlist 提示:打印机编号(必填) # 打印机识别码(必填) # 备注名称(选填) # 流量卡号码(选填),多台打印机请换行(\n)添加新打印机信息,每次最多100行(台)。 * @return 正确例子:{"msg":"ok","ret":0,"data":{"ok":["sn#key#remark#carnum","316500011#abcdefgh#快餐前台"],"no":["316500012#abcdefgh#快餐前台#13688889999 (错误:识别码不正确)"]},"serverExecutedTime":3} * 错误:{"msg":"参数错误 : 该帐号未注册.","ret":-2,"data":null,"serverExecutedTime":37} */ public static String updatePrinter(String snlist, String name) { String URL = commonInfoService.findOne(325).getValue(); String USER = commonInfoService.findOne(326).getValue(); String UKEY = commonInfoService.findOne(327).getValue(); //通过POST请求,发送打印信息到服务器 RequestConfig requestConfig = RequestConfig.custom() .setSocketTimeout(30000)//读取超时 .setConnectTimeout(30000)//连接超时 .build(); CloseableHttpClient httpClient = HttpClients.custom() .setDefaultRequestConfig(requestConfig) .build(); HttpPost post = new HttpPost(URL); List nvps = new ArrayList(); nvps.add(new BasicNameValuePair("user", USER)); String STIME = String.valueOf(System.currentTimeMillis() / 1000); nvps.add(new BasicNameValuePair("stime", STIME)); nvps.add(new BasicNameValuePair("sig", signature(USER, UKEY, STIME))); nvps.add(new BasicNameValuePair("apiname", "Open_printerEdit"));//固定值,不需要修改 nvps.add(new BasicNameValuePair("sn", snlist)); nvps.add(new BasicNameValuePair("name", name)); CloseableHttpResponse response = null; String result = null; try { post.setEntity(new UrlEncodedFormEntity(nvps, "utf-8")); response = httpClient.execute(post); int statecode = response.getStatusLine().getStatusCode(); if (statecode == 200) { HttpEntity httpentity = response.getEntity(); if (httpentity != null) { result = EntityUtils.toString(httpentity); } } } catch (Exception e) { e.printStackTrace(); } finally { try { if (response != null) { response.close(); } } catch (IOException e) { e.printStackTrace(); } try { post.abort(); } catch (Exception e) { e.printStackTrace(); } try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } return result; } /** * 删除打印机接口 * * @param snlist 提示:打印机编号(必填) # 打印机识别码(必填) # 备注名称(选填) # 流量卡号码(选填),多台打印机请换行(\n)添加新打印机信息,每次最多100行(台)。 * @return 正确例子:{"msg":"ok","ret":0,"data":{"ok":["sn#key#remark#carnum","316500011#abcdefgh#快餐前台"],"no":["316500012#abcdefgh#快餐前台#13688889999 (错误:识别码不正确)"]},"serverExecutedTime":3} * 错误:{"msg":"参数错误 : 该帐号未注册.","ret":-2,"data":null,"serverExecutedTime":37} */ public static String deletePrinter(String snlist) { try { String URL = commonInfoService.findOne(325).getValue(); String USER = commonInfoService.findOne(326).getValue(); String UKEY = commonInfoService.findOne(327).getValue(); //通过POST请求,发送打印信息到服务器 RequestConfig requestConfig = RequestConfig.custom() .setSocketTimeout(30000)//读取超时 .setConnectTimeout(30000)//连接超时 .build(); CloseableHttpClient httpClient = HttpClients.custom() .setDefaultRequestConfig(requestConfig) .build(); HttpPost post = new HttpPost(URL); List nvps = new ArrayList(); nvps.add(new BasicNameValuePair("user", USER)); String STIME = String.valueOf(System.currentTimeMillis() / 1000); nvps.add(new BasicNameValuePair("stime", STIME)); nvps.add(new BasicNameValuePair("sig", signature(USER, UKEY, STIME))); nvps.add(new BasicNameValuePair("apiname", "Open_printerDelList"));//固定值,不需要修改 nvps.add(new BasicNameValuePair("snlist", snlist)); CloseableHttpResponse response = null; String result = null; try { post.setEntity(new UrlEncodedFormEntity(nvps, "utf-8")); response = httpClient.execute(post); int statecode = response.getStatusLine().getStatusCode(); if (statecode == 200) { HttpEntity httpentity = response.getEntity(); if (httpentity != null) { result = EntityUtils.toString(httpentity); } } } catch (Exception e) { e.printStackTrace(); } finally { try { if (response != null) { response.close(); } } catch (IOException e) { e.printStackTrace(); } try { post.abort(); } catch (Exception e) { e.printStackTrace(); } try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } return result; } catch (Exception e) { e.printStackTrace(); log.error("删除打印机异常:" + e.getMessage(), e); } return null; } /** * 小票机打印订单接口 * * @param sn 打印机编号 * @param classify 分类 1加油成功出票模版 2提货券推送模版 3加油订单结算模版 4商品消费结算 * @return 成功:{"msg":"ok","ret":0,"data":"xxxxxxx_xxxxxxxx_xxxxxxxx","serverExecutedTime":5} * 失败:{"msg":"错误描述","ret":非0,"data":"null","serverExecutedTime":5} */ public static String print(String sn, Integer classify, TbOrder tbOrder) { try { //标签说明: //单标签: //"
"为换行,""为切刀指令(主动切纸,仅限切刀打印机使用才有效果) //""为打印LOGO指令(前提是预先在机器内置LOGO图片),""为钱箱或者外置音响指令 //成对标签: //""为居中放大一倍,""为放大一倍,""为居中,字体变高一倍 //字体变宽一倍,""为二维码,""为字体加粗,""为右对齐 //拼凑订单内容时可参考如下格式 //根据打印纸张的宽度,自行调整内容的格式,可参考下面的样例格式 //region 以前的代码 /*content = "测试打印
"; content += "名称      单价 数量 金额
"; content += "--------------------------------
"; content += "饭       1.0 1 1.0
"; content += "炒饭      10.0 10 10.0
"; content += "蛋炒饭     10.0 10 100.0
"; content += "鸡蛋炒饭    100.0 1 100.0
"; content += "番茄蛋炒饭   1000.0 1 100.0
"; content += "西红柿蛋炒饭  1000.0 1 100.0
"; content += "西红柿鸡蛋炒饭 100.0 10 100.0
"; content += "备注:加辣
"; content += "--------------------------------
"; content += "合计:xx.0元
"; content += "送货地点:广州市南沙区xx路xx号
"; content += "联系电话:13888888888888
"; content += "订餐时间:2016-08-08 08:08:08
"; content += "http://www.dzist.com";*/ //endregion //region 获取配置的打印模板信息 没设置的就正常不加粗 GoodsShop shopData = goodsShopService.selectGoodDatas(tbOrder.getShopId()); UserEntity parentUser = userService.selectUserById(tbOrder.getParentUserId()); TbCoupon tbCoupon = tbCouponService.selectCoupon(tbOrder.getCouponId()); ActivityOrderVO activity = tbOrder.getOrderId() == null ? null : activityService.selectByOrder(tbOrder.getOrderId()); List resultData = new ArrayList<>(); List infos = printInfoService.printInfos(); List typeIds = infos.stream().map(PrintInfo::getTypeId).distinct().collect(Collectors.toList()); PrintInfoShop pis = printInfoShopService.selectPrintInfoShopById(tbOrder.getShopId().intValue()); if (pis == null) { for (Integer typeId : typeIds) { List nowInfos = infos.stream().filter(e -> e.getTypeId().intValue() == typeId.intValue()).collect(Collectors.toList()); PrintModelResult data = new PrintModelResult(); List details = new ArrayList<>(); List types = new ArrayList<>(); for (PrintInfo nowInfo : nowInfos) { PrintModelDetailResult detailData = new PrintModelDetailResult(); detailData.setId(nowInfo.getId()); detailData.setPrintField(nowInfo.getPrintField()); detailData.setPrintName(nowInfo.getPrintName()); detailData.setIsCheck(0); details.add(detailData); PrintModelTypeResult typeData = new PrintModelTypeResult(); typeData.setId(nowInfo.getId()); typeData.setIsBlod(0); typeData.setWordSize(0); typeData.setPrintField(nowInfo.getPrintField()); typeData.setPrintName(nowInfo.getPrintName()); types.add(typeData); } if (nowInfos != null && nowInfos.size() > 0) { data.setId(typeId); data.setName(nowInfos.get(0).getTypeName()); } data.setDetails(details); data.setTypes(types); resultData.add(data); } } else { //要修改获取逻辑 if (pis.getBaseInfo().isEmpty()) { PrintModelResult data = new PrintModelResult(); List nowInfos = infos.stream().filter(e -> e.getTypeId().intValue() == ePrintStatu.Base.getValue()).collect(Collectors.toList()); List details = new ArrayList<>(); List types = new ArrayList<>(); for (PrintInfo nowInfo : nowInfos) { PrintModelDetailResult detailData = new PrintModelDetailResult(); detailData.setId(nowInfo.getId()); detailData.setPrintField(nowInfo.getPrintField()); detailData.setPrintName(nowInfo.getPrintName()); detailData.setIsCheck(0); details.add(detailData); PrintModelTypeResult typeData = new PrintModelTypeResult(); typeData.setId(nowInfo.getId()); typeData.setIsBlod(0); typeData.setWordSize(0); typeData.setPrintField(nowInfo.getPrintField()); typeData.setPrintName(nowInfo.getPrintName()); types.add(typeData); } data.setId(ePrintStatu.Base.getValue()); data.setName(nowInfos.get(0).getTypeName()); data.setDetails(details); data.setTypes(types); resultData.add(data); } else { ObjectMapper objectMapper = new ObjectMapper(); PrintModelResult data = objectMapper.readValue(pis.getBaseInfo(), PrintModelResult.class); resultData.add(data); } if (pis.getGoodInfo().isEmpty()) { PrintModelResult data = new PrintModelResult(); List nowInfos = infos.stream().filter(e -> e.getTypeId().intValue() == ePrintStatu.Good.getValue()).collect(Collectors.toList()); List details = new ArrayList<>(); List types = new ArrayList<>(); for (PrintInfo nowInfo : nowInfos) { PrintModelDetailResult detailData = new PrintModelDetailResult(); detailData.setId(nowInfo.getId()); detailData.setPrintField(nowInfo.getPrintField()); detailData.setPrintName(nowInfo.getPrintName()); detailData.setIsCheck(0); details.add(detailData); PrintModelTypeResult typeData = new PrintModelTypeResult(); typeData.setId(nowInfo.getId()); typeData.setIsBlod(0); typeData.setWordSize(0); typeData.setPrintField(nowInfo.getPrintField()); typeData.setPrintName(nowInfo.getPrintName()); types.add(typeData); } data.setId(ePrintStatu.Good.getValue()); data.setName(nowInfos.get(0).getTypeName()); data.setDetails(details); data.setTypes(types); resultData.add(data); } else { ObjectMapper objectMapper = new ObjectMapper(); PrintModelResult data = objectMapper.readValue(pis.getGoodInfo(), PrintModelResult.class); resultData.add(data); } if (pis.getPayInfo().isEmpty()) { PrintModelResult data = new PrintModelResult(); List nowInfos = infos.stream().filter(e -> e.getTypeId().intValue() == ePrintStatu.Pay.getValue()).collect(Collectors.toList()); List details = new ArrayList<>(); List types = new ArrayList<>(); for (PrintInfo nowInfo : nowInfos) { PrintModelDetailResult detailData = new PrintModelDetailResult(); detailData.setId(nowInfo.getId()); detailData.setPrintField(nowInfo.getPrintField()); detailData.setPrintName(nowInfo.getPrintName()); detailData.setIsCheck(0); details.add(detailData); PrintModelTypeResult typeData = new PrintModelTypeResult(); typeData.setId(nowInfo.getId()); typeData.setIsBlod(0); typeData.setWordSize(0); typeData.setPrintField(nowInfo.getPrintField()); typeData.setPrintName(nowInfo.getPrintName()); types.add(typeData); } data.setId(ePrintStatu.Pay.getValue()); data.setName(nowInfos.get(0).getTypeName()); data.setDetails(details); data.setTypes(types); resultData.add(data); } else { ObjectMapper objectMapper = new ObjectMapper(); PrintModelResult data = objectMapper.readValue(pis.getPayInfo(), PrintModelResult.class); resultData.add(data); } if (pis.getUserInfo().isEmpty()) { PrintModelResult data = new PrintModelResult(); List nowInfos = infos.stream().filter(e -> e.getTypeId().intValue() == ePrintStatu.User.getValue()).collect(Collectors.toList()); List details = new ArrayList<>(); List types = new ArrayList<>(); for (PrintInfo nowInfo : nowInfos) { PrintModelDetailResult detailData = new PrintModelDetailResult(); detailData.setId(nowInfo.getId()); detailData.setPrintField(nowInfo.getPrintField()); detailData.setPrintName(nowInfo.getPrintName()); detailData.setIsCheck(0); details.add(detailData); PrintModelTypeResult typeData = new PrintModelTypeResult(); typeData.setId(nowInfo.getId()); typeData.setIsBlod(0); typeData.setWordSize(0); typeData.setPrintField(nowInfo.getPrintField()); typeData.setPrintName(nowInfo.getPrintName()); types.add(typeData); } data.setId(ePrintStatu.User.getValue()); data.setName(nowInfos.get(0).getTypeName()); data.setDetails(details); data.setTypes(types); resultData.add(data); } else { ObjectMapper objectMapper = new ObjectMapper(); PrintModelResult data = objectMapper.readValue(pis.getUserInfo(), PrintModelResult.class); resultData.add(data); } } //endregion // :放大一倍 // :字体加粗 // :居中 // :居中放大 // :右对齐 //PrintModelResult result //字体样式只针对内容 List orderGoodsList = tbOrder.getOrderGoodsList(); StringBuilder stringBuilder = new StringBuilder(); int max = Integer.parseInt(commonInfoService.findOne(420).getValue()); for (int i = 0; i < max; i++) { //region 基本信息:平台名称 店铺名 订单号 送达时间 订单类型 Optional oBaseInfo = resultData.stream().filter(e -> e.getId().intValue() == ePrintStatu.Base.getValue()).findFirst(); List baseTypes = oBaseInfo.get().getTypes(); //region 平台名称 String bplatformNameType_start = null; String bplatformNameType_end = null; //endregion //region 商铺名 String bshopName_start = null; String bshopName_end = null; //endregion //region 订单类型 String borderTypeExtra_start = null; String borderTypeExtra_end = null; //endregion //region 订单号 String borderNumber_start = null; String borderNumber_end = null; //endregion StringBuilder baseStringBuilder = new StringBuilder(); for (PrintModelTypeResult baseType : baseTypes) { StringBuilder start = new StringBuilder(); StringBuilder end = new StringBuilder(); if (baseType.getWordSize().intValue() == eWordSize.Amplify.getValue()) { start.append(""); end.append(""); } if (baseType.getWordSize().intValue() == eWordSize.Amplify.getValue()) { start.append(""); end.append(""); } switch (baseType.getPrintField()) { case "platform_name": bplatformNameType_start = "" + start.toString(); bplatformNameType_end = end.toString()+""; break; case "shop_name": bshopName_start = "" + start.toString(); bshopName_end = end.toString()+""; break; case "order_type_extra": borderTypeExtra_start = start.toString(); borderTypeExtra_end = end.toString(); break; case "order_number": borderNumber_start = start.toString(); borderNumber_end = end.toString(); break; case "user_nick_name": baseStringBuilder.append(start.toString()).append(baseType.getPrintName()+":").append(tbOrder.getUserNickName()).append(end.toString()).append("
"); break; case "shop_phone": baseStringBuilder.append(start.toString()).append(baseType.getPrintName()+":").append(tbOrder.getShopPhone()).append(end.toString()).append("
"); break; case "distribution_distance_start": baseStringBuilder.append(start.toString()).append(baseType.getPrintName()+":").append(tbOrder.getDistributionDistance()).append(end.toString()).append("
"); break; case "detailed_address": baseStringBuilder.append(start.toString()).append(baseType.getPrintName()+":").append(tbOrder.getDetailedAddress()).append(end.toString()).append("
"); break; case "remark": baseStringBuilder.append(start.toString()).append(baseType.getPrintName()+":").append(tbOrder.getRemark()).append(end.toString()).append("
"); break; case "shop_receiving_time": baseStringBuilder.append(start.toString()).append(baseType.getPrintName()+":").append(tbOrder.getShopReceivingTime()).append(end.toString()).append("
"); break; case "shop_id": baseStringBuilder.append(start.toString()).append(baseType.getPrintName()+":").append(shopData != null ? shopData.getBusinessHours()+"-"+shopData.getLockHours() : "").append(end.toString()).append("
"); break; case "parent_user_id": baseStringBuilder.append(start.toString()).append(baseType.getPrintName()+":").append(parentUser == null ? "" : parentUser.getNickName()).append(end.toString()).append("
"); break; case "pay_money": baseStringBuilder.append(start.toString()).append(baseType.getPrintName()+":").append(tbOrder.getPayMoney()).append("元").append(end.toString()).append("
"); break; case "auto_send_order": baseStringBuilder.append(start.toString()).append(baseType.getPrintName()+":").append(tbOrder.getAutoSendOrder().intValue() == 0 ? "开启" : "关闭").append(end.toString()).append("
"); break; case "errand_money": baseStringBuilder.append(start.toString()).append(baseType.getPrintName()+":").append(tbOrder.getErrandMoney()).append("元").append(end.toString()).append("
"); break; case "pack_money": baseStringBuilder.append(start.toString()).append(baseType.getPrintName()+":").append(tbOrder.getPackMoney()).append("元").append(end.toString()).append("
"); break; case "order_code": baseStringBuilder.append(start.toString()).append(baseType.getPrintName()+":").append(tbOrder.getOrderCode()).append(end.toString()).append("
"); break; case "pay_type": baseStringBuilder.append(start.toString()).append(baseType.getPrintName()+":").append(tbOrder.getPayType().intValue() == 1 ? "微信支付" : (tbOrder.getPayType().intValue() == 2 ? "余额支付" : "支付宝支付")).append(end.toString()).append("
"); break; case "pay_time": baseStringBuilder.append(start.toString()).append(baseType.getPrintName()+":").append(tbOrder.getPayTime()).append(end.toString()).append("
"); break; case "create_time": baseStringBuilder.append(start.toString()).append(baseType.getPrintName()+":").append(tbOrder.getCreateTime()).append(end.toString()).append("
"); break; case "address": if (StringUtils.isNotEmpty(tbOrder.getAddress())) { JSONObject jsonObject = JSONObject.parseObject(tbOrder.getAddress()); String addressDetail = jsonObject.getString("addressDetail"); String city = jsonObject.getString("city"); String district = jsonObject.getString("district"); String province = jsonObject.getString("province"); baseStringBuilder.append(start.toString()).append(province).append(city).append(district).append(addressDetail).append(end.toString()).append("
"); } break; case "phone": if (StringUtils.isNotEmpty(tbOrder.getAddress())) { JSONObject jsonObject = JSONObject.parseObject(tbOrder.getAddress()); String phone = jsonObject.getString("userPhone"); baseStringBuilder.append(start.toString()).append(phone).append(end.toString()).append("
"); } break; case "user_name": if (StringUtils.isNotEmpty(tbOrder.getAddress())) { JSONObject jsonObject = JSONObject.parseObject(tbOrder.getAddress()); String userName = jsonObject.getString("userName"); baseStringBuilder.append(start.toString()).append(userName).append(end.toString()).append("
"); } break; case "user_id"://显示isVip和vipExpirationTime UserEntity user = null; if(tbOrder.getUserId() != null){ user = userService.selectUserById(tbOrder.getUserId()); } baseStringBuilder.append(start.toString()).append("是否会员:").append(user == null ? "" : (user.getIsVip().intValue() == 1 ? "是" : "否")).append(end.toString()).append("
"); baseStringBuilder.append(start.toString()).append("会员有效期:").append(user == null ? "" : user.getVipExpirationTime()).append(end.toString()).append("
"); break; case "coupon_id"://拿优惠券表中的优惠券名称 baseStringBuilder.append(start.toString()).append(baseType.getPrintName()+":").append(tbCoupon == null ? "" : tbCoupon.getCouponName()).append(end.toString()).append("
"); break; case "expect_delivery_time": baseStringBuilder.append(start.toString()).append(baseType.getPrintName()+":").append(tbOrder.getExpectDeliveryTime()).append(end.toString()).append("
"); break; case "activity_title"://通过订单ID去activity_part_record表中查到activity_id后再去activity表中获取活动标题 baseStringBuilder.append(start.toString()).append(baseType.getPrintName()+":").append(activity == null ? "" : activity.getTitle()).append(end.toString()).append("
"); break; default: break; } } if (bplatformNameType_start != null) { stringBuilder.append(bplatformNameType_start).append("#").append(tbOrder.getCountOrder()).append("-").append("墨轩云商").append(bplatformNameType_end); } if (bshopName_start != null) { stringBuilder.append(bshopName_start).append(tbOrder.getShopName()).append(bshopName_end); } if (borderTypeExtra_start != null) { stringBuilder.append(borderTypeExtra_start).append("类型:").append(eOrderTypeExtra.stringOf(tbOrder.getOrderTypeExtra())).append(borderTypeExtra_end).append("
"); } if (borderNumber_start != null) { stringBuilder.append(borderNumber_start).append("订单号:").append(tbOrder.getOrderNumber()).append(borderNumber_end).append("
"); } stringBuilder.append(baseStringBuilder.toString()); //endregion stringBuilder.append("--------------------------------
"); //region 商品信息:商品名称 单价 数量 备注 金额 stringBuilder.append("名称    单价  数量  金额 
"); stringBuilder.append("--------------------------------
"); BigDecimal packMoney = BigDecimal.ZERO; BigDecimal goodsMoney = BigDecimal.ZERO; //stringBuilder.append("
"); //region 字号样式 Optional oGoodInfo = resultData.stream().filter(e -> e.getId().intValue() == ePrintStatu.Good.getValue()).findFirst(); List goodTypes = oGoodInfo.get().getTypes(); //region 商品名称 String goods_name_start = null; String goods_name_end = null; //endregion //region 单价 String goods_price_start = null; String goods_price_end = null; //endregion //region 数量 String goods_num_start = null; String goods_num_end = null; //endregion //region 备注 String remark_start = null; String remark_end = null; //endregion //region 金额 String sum_money_start = null; String sum_money_end = null; //endregion StringBuilder goodStringBuilder = new StringBuilder(); for (PrintModelTypeResult type : goodTypes) { StringBuilder start = new StringBuilder(); StringBuilder end = new StringBuilder(); if (type.getWordSize().intValue() == eWordSize.Amplify.getValue()) { start.append(""); end.append(""); } if (type.getWordSize().intValue() == eWordSize.Amplify.getValue()) { start.append(""); end.append(""); } switch (type.getPrintField()) { case "goods_name": goods_name_start = start.toString(); goods_name_end = end.toString(); break; case "goods_price": goods_price_start = start.toString(); goods_price_end = end.toString(); break; case "goods_num": goods_num_start = start.toString(); goods_num_end = end.toString(); break; case "remark": remark_start = start.toString(); remark_end = end.toString(); break; case "sum_money": sum_money_start = start.toString(); sum_money_end = end.toString(); break; case "platform_name": goodStringBuilder.append(start.toString()).append("#").append(tbOrder.getCountOrder()).append("-").append("墨轩云商").append(end.toString()); break; case "shop_name": goodStringBuilder.append(start.toString()).append(tbOrder.getShopName()).append(end.toString()); break; case "order_type_extra": goodStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(eOrderTypeExtra.stringOf(tbOrder.getOrderTypeExtra())).append(end.toString()).append("
"); break; case "order_number": goodStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getOrderNumber()).append(end.toString()).append("
"); break; case "user_nick_name": goodStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getUserNickName()).append(end.toString()).append("
"); break; case "shop_phone": goodStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getShopPhone()).append(end.toString()).append("
"); break; case "distribution_distance_start": goodStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getDistributionDistance()).append(end.toString()).append("
"); break; case "detailed_address": goodStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getDetailedAddress()).append(end.toString()).append("
"); break; case "shop_receiving_time": goodStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getShopReceivingTime()).append(end.toString()).append("
"); break; case "shop_id": goodStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(shopData != null ? shopData.getBusinessHours()+"-"+shopData.getLockHours() : "").append(end.toString()).append("
"); break; case "parent_user_id": goodStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(parentUser == null ? "" : parentUser.getNickName()).append(end.toString()).append("
"); break; case "pay_money": goodStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getPayMoney()).append("元").append(end.toString()).append("
"); break; case "auto_send_order": goodStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getAutoSendOrder().intValue() == 0 ? "开启" : "关闭").append(end.toString()).append("
"); break; case "errand_money": goodStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getErrandMoney()).append("元").append(end.toString()).append("
"); break; case "pack_money": goodStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getPackMoney()).append("元").append(end.toString()).append("
"); break; case "order_code": goodStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getOrderCode()).append(end.toString()).append("
"); break; case "pay_type": goodStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getPayType().intValue() == 1 ? "微信支付" : (tbOrder.getPayType().intValue() == 2 ? "余额支付" : "支付宝支付")).append(end.toString()).append("
"); break; case "pay_time": goodStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getPayTime()).append(end.toString()).append("
"); break; case "create_time": goodStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getCreateTime()).append(end.toString()).append("
"); break; case "address": if (StringUtils.isNotEmpty(tbOrder.getAddress())) { JSONObject jsonObject = JSONObject.parseObject(tbOrder.getAddress()); String addressDetail = jsonObject.getString("addressDetail"); String city = jsonObject.getString("city"); String district = jsonObject.getString("district"); String province = jsonObject.getString("province"); goodStringBuilder.append(start.toString()).append(province).append(city).append(district).append(addressDetail).append(end.toString()).append("
"); } break; case "phone": if (StringUtils.isNotEmpty(tbOrder.getAddress())) { JSONObject jsonObject = JSONObject.parseObject(tbOrder.getAddress()); String phone = jsonObject.getString("userPhone"); goodStringBuilder.append(start.toString()).append(phone).append(end.toString()).append("
"); } break; case "user_name": if (StringUtils.isNotEmpty(tbOrder.getAddress())) { JSONObject jsonObject = JSONObject.parseObject(tbOrder.getAddress()); String userName = jsonObject.getString("userName"); goodStringBuilder.append(start.toString()).append(userName).append(end.toString()).append("
"); } break; case "user_id"://显示isVip和vipExpirationTime UserEntity user = null; if(tbOrder.getUserId() != null){ user = userService.selectUserById(tbOrder.getUserId()); } goodStringBuilder.append(start.toString()).append("是否会员:").append(user == null ? "" : (user.getIsVip().intValue() == 1 ? "是" : "否")).append(end.toString()).append("
"); goodStringBuilder.append(start.toString()).append("会员有效期:").append(user == null ? "" : user.getVipExpirationTime()).append(end.toString()).append("
"); break; case "coupon_id"://拿优惠券表中的优惠券名称 goodStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbCoupon == null ? "" : tbCoupon.getCouponName()).append(end.toString()).append("
"); break; case "expect_delivery_time": goodStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getExpectDeliveryTime()).append(end.toString()).append("
"); break; case "activity_title"://通过订单ID去activity_part_record表中查到activity_id后再去activity表中获取活动标题 goodStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(activity == null ? "" : activity.getTitle()).append(end.toString()).append("
"); break; default: break; } } //endregion for (OrderGoods orderGoods : orderGoodsList) { BigDecimal sumMoney = orderGoods.getGoodsPrice().multiply(BigDecimal.valueOf(orderGoods.getGoodsNum())); BigDecimal sumPack = orderGoods.getGoodsPack().multiply(BigDecimal.valueOf(orderGoods.getGoodsNum())); packMoney = packMoney.add(sumPack); goodsMoney = goodsMoney.add(sumMoney); String name; if (StringUtils.isNotEmpty(orderGoods.getSkuMessage())) { name = orderGoods.getGoodsName() + "(" + orderGoods.getSkuMessage() + ")"; } else { name = orderGoods.getGoodsName(); } stringBuilder.append(goods_name_start).append(name).append(goods_name_end); stringBuilder.append("    "); stringBuilder.append(goods_price_start).append(orderGoods.getGoodsPrice()).append(goods_price_end); if (orderGoods.getGoodsPrice().doubleValue() < 10) { stringBuilder.append("  "); } else if (orderGoods.getGoodsPrice().doubleValue() < 100) { stringBuilder.append("  "); } else { stringBuilder.append("  "); } stringBuilder.append(goods_num_start).append(orderGoods.getGoodsNum()).append(goods_num_end); stringBuilder.append("  "); stringBuilder.append(sum_money_start).append(sumMoney).append(sum_money_end); stringBuilder.append("
"); //stringBuilder.append("
"); } stringBuilder.append("--------------------------------
"); String remark = tbOrder.getRemark(); if (StringUtils.isEmpty(remark)) { remark = ""; } stringBuilder.append(remark_start).append("备注:").append(remark).append(remark_end).append("
"); stringBuilder.append(goodStringBuilder.toString()); //endregion stringBuilder.append("--------------------------------
"); //region 支付信息:打包费 商品费 优惠券 跑腿费 优惠活动 合计 //region 字号样式 Optional oPayInfo = resultData.stream().filter(e -> e.getId().intValue() == ePrintStatu.Pay.getValue()).findFirst(); List payTypes = oPayInfo.get().getTypes(); //region 打包费 String pack_money_start = null; String pack_money_end = null; //endregion //region 商品费 String goods_money_start = null; String goods_money_end = null; //endregion //region 优惠券 String coupon_money_start = null; String coupon_money_end = null; //endregion //region 跑腿费 String errand_money_start = null; String errand_money_end = null; //endregion //region 优惠活动 String activity_title_start = null; String activity_title_end = null; //endregion //region 合计 String pay_money_start = null; String pay_money_end = null; //endregion StringBuilder payStringBuilder = new StringBuilder(); for (PrintModelTypeResult type : payTypes) { StringBuilder start = new StringBuilder(); StringBuilder end = new StringBuilder(); if (type.getWordSize().intValue() == eWordSize.Amplify.getValue()) { start.append(""); end.append(""); } if (type.getWordSize().intValue() == eWordSize.Amplify.getValue()) { start.append(""); end.append(""); } switch (type.getPrintField()) { case "pack_money": pack_money_start = start.toString(); pack_money_end = end.toString(); break; case "goods_money": goods_money_start = start.toString(); goods_money_end = end.toString(); break; case "coupon_money": coupon_money_start = start.toString(); coupon_money_end = end.toString(); break; case "errand_money": errand_money_start = start.toString(); errand_money_end = end.toString(); break; case "activity_title": activity_title_start = start.toString(); activity_title_end = end.toString(); break; case "pay_money": pay_money_start = start.toString(); pay_money_end = end.toString(); break; case "platform_name": payStringBuilder.append(start.toString()).append("#").append(tbOrder.getCountOrder()).append("-").append("墨轩云商").append(end.toString()); break; case "shop_name": payStringBuilder.append(start.toString()).append(tbOrder.getShopName()).append(end.toString()); break; case "order_type_extra": payStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(eOrderTypeExtra.stringOf(tbOrder.getOrderTypeExtra())).append(end.toString()).append("
"); break; case "order_number": payStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getOrderNumber()).append(end.toString()).append("
"); break; case "user_nick_name": payStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getUserNickName()).append(end.toString()).append("
"); break; case "shop_phone": payStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getShopPhone()).append(end.toString()).append("
"); break; case "distribution_distance_start": payStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getDistributionDistance()).append(end.toString()).append("
"); break; case "detailed_address": payStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getDetailedAddress()).append(end.toString()).append("
"); break; case "remark": payStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getRemark()).append(end.toString()).append("
"); break; case "shop_receiving_time": payStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getShopReceivingTime()).append(end.toString()).append("
"); break; case "shop_id": payStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(shopData != null ? shopData.getBusinessHours()+"-"+shopData.getLockHours() : "").append(end.toString()).append("
"); break; case "parent_user_id": payStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(parentUser == null ? "" : parentUser.getNickName()).append(end.toString()).append("
"); break; case "auto_send_order": payStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getAutoSendOrder().intValue() == 0 ? "开启" : "关闭").append(end.toString()).append("
"); break; case "order_code": payStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getOrderCode()).append(end.toString()).append("
"); break; case "pay_type": payStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getPayType().intValue() == 1 ? "微信支付" : (tbOrder.getPayType().intValue() == 2 ? "余额支付" : "支付宝支付")).append(end.toString()).append("
"); break; case "pay_time": payStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getPayTime()).append(end.toString()).append("
"); break; case "create_time": payStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getCreateTime()).append(end.toString()).append("
"); break; case "address": if (StringUtils.isNotEmpty(tbOrder.getAddress())) { JSONObject jsonObject = JSONObject.parseObject(tbOrder.getAddress()); String addressDetail = jsonObject.getString("addressDetail"); String city = jsonObject.getString("city"); String district = jsonObject.getString("district"); String province = jsonObject.getString("province"); payStringBuilder.append(start.toString()).append(province).append(city).append(district).append(addressDetail).append(end.toString()).append("
"); } break; case "phone": if (StringUtils.isNotEmpty(tbOrder.getAddress())) { JSONObject jsonObject = JSONObject.parseObject(tbOrder.getAddress()); String phone = jsonObject.getString("userPhone"); payStringBuilder.append(start.toString()).append(phone).append(end.toString()).append("
"); } break; case "user_name": if (StringUtils.isNotEmpty(tbOrder.getAddress())) { JSONObject jsonObject = JSONObject.parseObject(tbOrder.getAddress()); String userName = jsonObject.getString("userName"); payStringBuilder.append(start.toString()).append(userName).append(end.toString()).append("
"); } break; case "user_id"://显示isVip和vipExpirationTime UserEntity user = null; if(tbOrder.getUserId() != null){ user = userService.selectUserById(tbOrder.getUserId()); } payStringBuilder.append(start.toString()).append("是否会员:").append(user == null ? "" : (user.getIsVip().intValue() == 1 ? "是" : "否")).append(end.toString()).append("
"); payStringBuilder.append(start.toString()).append("会员有效期:").append(user == null ? "" : user.getVipExpirationTime()).append(end.toString()).append("
"); break; case "coupon_id"://拿优惠券表中的优惠券名称 payStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbCoupon == null ? "" : tbCoupon.getCouponName()).append(end.toString()).append("
"); break; case "expect_delivery_time": payStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getExpectDeliveryTime()).append(end.toString()).append("
"); break; default: break; } } //endregion stringBuilder.append(pack_money_start).append("打包费:").append(packMoney).append("元").append(pack_money_end + "
"); stringBuilder.append(goods_money_start).append("商品费:").append(goodsMoney).append("元").append(goods_money_end + "
"); if (tbOrder.getCouponMoney() != null) { stringBuilder.append(coupon_money_start).append("优惠券:").append("-" + tbOrder.getCouponMoney()).append("元").append(coupon_money_end + "
"); } else { stringBuilder.append(coupon_money_start).append("优惠券:").append("-0").append("元").append(coupon_money_end + "
"); } BigDecimal errandMoney = tbOrder.getErrandMoney(); if (errandMoney == null) { errandMoney = BigDecimal.ZERO; } stringBuilder.append(errand_money_start).append("跑腿费:").append(errandMoney).append("元").append(errand_money_end + "
"); //从这个表里拿优惠活动 activity_part_record 活动参与记录表 stringBuilder.append(activity_title_start).append("优惠活动:").append(activity == null ? "" : activity.getTitle()).append(activity_title_end + "
"); stringBuilder.append(pay_money_start).append("合计:").append(tbOrder.getPayMoney()).append("元").append(pay_money_end + "
"); stringBuilder.append(payStringBuilder.toString()); //endregion stringBuilder.append("--------------------------------
"); //region 用户信息:姓名 电话号 地址 订餐时间 商家联系电话 //region 字号样式 Optional oUserInfo = resultData.stream().filter(e -> e.getId().intValue() == ePrintStatu.User.getValue()).findFirst(); List userTypes = oUserInfo.get().getTypes(); //region 姓名 String user_name_start = null; String user_name_end = null; //endregion //region 电话号 String phone_start = null; String phone_end = null; //endregion //region 地址 String address_detail_start = null; String address_detail_end = null; //endregion //region 订餐时间 String pay_time_start = null; String pay_time_end = null; //endregion StringBuilder userStringBuilder = new StringBuilder(); for (PrintModelTypeResult type : userTypes) { StringBuilder start = new StringBuilder(); StringBuilder end = new StringBuilder(); if (type.getWordSize().intValue() == eWordSize.Amplify.getValue()) { start.append(""); end.append(""); } if (type.getWordSize().intValue() == eWordSize.Amplify.getValue()) { start.append(""); end.append(""); } switch (type.getPrintField()) { case "user_name": user_name_start = start.toString(); user_name_end = end.toString(); break; case "phone": phone_start = start.toString(); phone_end = end.toString(); break; case "address_detail": address_detail_start = start.toString(); address_detail_end = end.toString(); break; case "pay_time": pay_time_start = start.toString(); pay_time_end = end.toString(); break; case "platform_name": userStringBuilder.append(start.toString()).append("#").append(tbOrder.getCountOrder()).append("-").append("墨轩云商").append(end.toString()); break; case "shop_name": userStringBuilder.append(start.toString()).append(tbOrder.getShopName()).append(end.toString()); break; case "order_type_extra": userStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(eOrderTypeExtra.stringOf(tbOrder.getOrderTypeExtra())).append(end.toString()).append("
"); break; case "order_number": userStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getOrderNumber()).append(end.toString()).append("
"); break; case "user_nick_name": userStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getUserNickName()).append(end.toString()).append("
"); break; case "shop_phone": userStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getShopPhone()).append(end.toString()).append("
"); break; case "distribution_distance_start": userStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getDistributionDistance()).append(end.toString()).append("
"); break; case "detailed_address": userStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getDetailedAddress()).append(end.toString()).append("
"); break; case "remark": userStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getRemark()).append(end.toString()).append("
"); break; case "shop_receiving_time": userStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getShopReceivingTime()).append(end.toString()).append("
"); break; case "shop_id": userStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(shopData != null ? shopData.getBusinessHours()+"-"+shopData.getLockHours() : "").append(end.toString()).append("
"); break; case "parent_user_id": userStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(parentUser == null ? "" : parentUser.getNickName()).append(end.toString()).append("
"); break; case "pay_money": userStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getPayMoney()).append("元").append(end.toString()).append("
"); break; case "auto_send_order": userStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getAutoSendOrder().intValue() == 0 ? "开启" : "关闭").append(end.toString()).append("
"); break; case "errand_money": userStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getErrandMoney()).append("元").append(end.toString()).append("
"); break; case "pack_money": userStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getPackMoney()).append("元").append(end.toString()).append("
"); break; case "order_code": userStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getOrderCode()).append(end.toString()).append("
"); break; case "pay_type": userStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getPayType().intValue() == 1 ? "微信支付" : (tbOrder.getPayType().intValue() == 2 ? "余额支付" : "支付宝支付")).append(end.toString()).append("
"); break; case "create_time": userStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getCreateTime()).append(end.toString()).append("
"); break; case "address": if (StringUtils.isNotEmpty(tbOrder.getAddress())) { JSONObject jsonObject = JSONObject.parseObject(tbOrder.getAddress()); String addressDetail = jsonObject.getString("addressDetail"); String city = jsonObject.getString("city"); String district = jsonObject.getString("district"); String province = jsonObject.getString("province"); userStringBuilder.append(start.toString()).append(province).append(city).append(district).append(addressDetail).append(end.toString()).append("
"); } break; case "user_id"://显示isVip和vipExpirationTime UserEntity user = null; if(tbOrder.getUserId() != null){ user = userService.selectUserById(tbOrder.getUserId()); } userStringBuilder.append(start.toString()).append("是否会员:").append(user == null ? "" : (user.getIsVip().intValue() == 1 ? "是" : "否")).append(end.toString()).append("
"); userStringBuilder.append(start.toString()).append("会员有效期:").append(user == null ? "" : user.getVipExpirationTime()).append(end.toString()).append("
"); break; case "coupon_id"://拿优惠券表中的优惠券名称 userStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbCoupon == null ? "" : tbCoupon.getCouponName()).append(end.toString()).append("
"); break; case "expect_delivery_time": userStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(tbOrder.getExpectDeliveryTime()).append(end.toString()).append("
"); break; case "activity_title"://通过订单ID去activity_part_record表中查到activity_id后再去activity表中获取活动标题 userStringBuilder.append(start.toString()).append(type.getPrintName()+":").append(activity == null ? "" : activity.getTitle()).append(end.toString()).append("
"); break; default: break; } } //endregion if (StringUtils.isNotEmpty(tbOrder.getAddress())) { JSONObject jsonObject = JSONObject.parseObject(tbOrder.getAddress()); String addressDetail = jsonObject.getString("addressDetail"); String city = jsonObject.getString("city"); String district = jsonObject.getString("district"); String province = jsonObject.getString("province"); String userName = jsonObject.getString("userName"); String phone = jsonObject.getString("userPhone"); stringBuilder.append(user_name_start).append(userName).append(user_name_end).append("
"); stringBuilder.append(phone_start).append(phone).append(phone_end).append("
"); stringBuilder.append(address_detail_start).append(province).append(city).append(district).append(addressDetail).append(address_detail_end).append("
"); } else { stringBuilder.append(phone_start).append(tbOrder.getPhone()).append(phone_end).append("
"); } stringBuilder.append(pay_time_start).append("订餐时间:").append(tbOrder.getPayTime()).append(pay_time_end).append("
"); stringBuilder.append(userStringBuilder); stringBuilder.append("
").append("
").append("
"); stringBuilder.append(""); //endregion } String content = stringBuilder.toString(); //通过POST请求,发送打印信息到服务器 RequestConfig requestConfig = RequestConfig.custom() .setSocketTimeout(30000)//读取超时 .setConnectTimeout(30000)//连接超时 .build(); CloseableHttpClient httpClient = HttpClients.custom() .setDefaultRequestConfig(requestConfig) .build(); String URL = commonInfoService.findOne(325).getValue(); String USER = commonInfoService.findOne(326).getValue(); String UKEY = commonInfoService.findOne(327).getValue(); HttpPost post = new HttpPost(URL); List nvps = new ArrayList(); nvps.add(new BasicNameValuePair("user", USER)); String STIME = String.valueOf(System.currentTimeMillis() / 1000); nvps.add(new BasicNameValuePair("stime", STIME)); nvps.add(new BasicNameValuePair("sig", signature(USER, UKEY, STIME))); nvps.add(new BasicNameValuePair("apiname", "Open_printMsg"));//固定值,不需要修改 nvps.add(new BasicNameValuePair("sn", sn)); nvps.add(new BasicNameValuePair("content", content)); nvps.add(new BasicNameValuePair("times", "1"));//打印联数 CloseableHttpResponse response = null; String result = null; try { post.setEntity(new UrlEncodedFormEntity(nvps, "utf-8")); response = httpClient.execute(post); int statecode = response.getStatusLine().getStatusCode(); if (statecode == 200) { HttpEntity httpentity = response.getEntity(); if (httpentity != null) { //服务器返回的JSON字符串,建议要当做日志记录起来 result = EntityUtils.toString(httpentity); } } } catch (Exception e) { e.printStackTrace(); } finally { try { if (response != null) { response.close(); } } catch (IOException e) { e.printStackTrace(); } try { post.abort(); } catch (Exception e) { e.printStackTrace(); } try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } log.error("打印返回值:" + result); return result; } catch (Exception e) { e.printStackTrace(); log.error("打印异常:" + e.getMessage(), e); } return null; } /** * 小票机打印订单接口 * * @param sn 打印机编号 * @return 成功:{"msg":"ok","ret":0,"data":"xxxxxxx_xxxxxxxx_xxxxxxxx","serverExecutedTime":5} * 失败:{"msg":"错误描述","ret":非0,"data":"null","serverExecutedTime":5} */ public static String testPrint(String sn) { try { //标签说明: //单标签: //"
"为换行,""为切刀指令(主动切纸,仅限切刀打印机使用才有效果) //""为打印LOGO指令(前提是预先在机器内置LOGO图片),""为钱箱或者外置音响指令 //成对标签: //""为居中放大一倍,""为放大一倍,""为居中,字体变高一倍 //字体变宽一倍,""为二维码,""为字体加粗,""为右对齐 //拼凑订单内容时可参考如下格式 //根据打印纸张的宽度,自行调整内容的格式,可参考下面的样例格式 //region 以前的代码 String content = "测试打印
"; content += "名称      单价 数量 金额
"; content += "--------------------------------
"; content += "饭       1.0 1 1.0
"; content += "炒饭      10.0 10 10.0
"; content += "蛋炒饭     10.0 10 100.0
"; content += "蛋炒饭     10.0 10 100.0
"; content += "鸡蛋炒饭    100.0 1 100.0
"; content += "番茄蛋炒饭   1000.0 1 100.0
"; content += "西红柿蛋炒饭  1000.0 1 100.0
"; content += "西红柿鸡蛋炒饭 100.0 10 100.0
"; content += "备注:加辣
"; content += "--------------------------------
"; content += "合计:xx.0元
"; content += "送货地点:广州市南沙区xx路xx号
"; content += "联系电话:13888888888888
"; content += "订餐时间:2016-08-08 08:08:08
"; content += "http://www.dzist.com"; //endregion StringBuilder stringBuilder = new StringBuilder(); //region 以前的代码 /*stringBuilder.append("
").append("
").append("
"); stringBuilder.append("").append(tbOrder.getShopName()).append("
"); if(tbOrder.getOrderType()==1){ stringBuilder.append("类型:").append("到店取餐
"); stringBuilder.append("取餐号:").append(tbOrder.getOrderCode()).append("
"); }else{ stringBuilder.append("类型:").append("外卖配送
"); } stringBuilder.append("订单号:").append(tbOrder.getOrderNumber()).append("
"); stringBuilder.append("--------------------------------
"); stringBuilder.append("名称    单价  数量  金额 
"); stringBuilder.append("--------------------------------
"); stringBuilder.append("
"); for(OrderGoods orderGoods:orderGoodsList){ BigDecimal sumMoney = orderGoods.getGoodsPrice().multiply(BigDecimal.valueOf(orderGoods.getGoodsNum())); String name; if(StringUtils.isNotEmpty(orderGoods.getSkuMessage())){ name=orderGoods.getGoodsName()+"("+orderGoods.getSkuMessage()+")"; }else{ name=orderGoods.getGoodsName(); } stringBuilder.append(name).append("
"); stringBuilder.append("      "); stringBuilder.append(orderGoods.getGoodsPrice()); if(orderGoods.getGoodsPrice().doubleValue()<10){ stringBuilder.append("  "); }else if(orderGoods.getGoodsPrice().doubleValue()<100){ stringBuilder.append("  "); }else{ stringBuilder.append("  "); } stringBuilder.append(orderGoods.getGoodsNum()); stringBuilder.append("  "); stringBuilder.append(sumMoney).append("
"); stringBuilder.append("
"); } stringBuilder.append("--------------------------------
"); stringBuilder.append("备注:").append(remark).append("
"); stringBuilder.append("--------------------------------
"); stringBuilder.append("打包费:").append(packMoney).append("元
"); stringBuilder.append("商品费:").append(goodsMoney).append("元
"); if(tbOrder.getCouponMoney()!=null){ stringBuilder.append("优惠券:-").append(tbOrder.getCouponMoney()).append("元
"); } stringBuilder.append("跑腿费:").append(errandMoney).append("元
"); stringBuilder.append("合计:").append(tbOrder.getPayMoney()).append("元
"); stringBuilder.append("--------------------------------
"); if(StringUtils.isNotEmpty(tbOrder.getAddress())){ JSONObject jsonObject = JSONObject.parseObject(tbOrder.getAddress()); String addressDetail = jsonObject.getString("addressDetail"); String city = jsonObject.getString("city"); String district = jsonObject.getString("district"); String province = jsonObject.getString("province"); String userName = jsonObject.getString("userName"); String phone = jsonObject.getString("userPhone"); stringBuilder.append("姓名:").append(userName).append("
"); stringBuilder.append("联系电话:").append(phone).append("
"); stringBuilder.append("送货地点:").append(province).append(city).append(district).append(addressDetail).append("
"); }else{ stringBuilder.append("联系电话:").append(tbOrder.getPhone()).append("
"); } stringBuilder.append("订餐时间:").append(tbOrder.getPayTime()).append("
");*/ //endregion //通过POST请求,发送打印信息到服务器 RequestConfig requestConfig = RequestConfig.custom() .setSocketTimeout(30000)//读取超时 .setConnectTimeout(30000)//连接超时 .build(); CloseableHttpClient httpClient = HttpClients.custom() .setDefaultRequestConfig(requestConfig) .build(); String URL = commonInfoService.findOne(325).getValue(); String USER = commonInfoService.findOne(326).getValue(); String UKEY = commonInfoService.findOne(327).getValue(); HttpPost post = new HttpPost(URL); List nvps = new ArrayList(); nvps.add(new BasicNameValuePair("user", USER)); String STIME = String.valueOf(System.currentTimeMillis() / 1000); nvps.add(new BasicNameValuePair("stime", STIME)); nvps.add(new BasicNameValuePair("sig", signature(USER, UKEY, STIME))); nvps.add(new BasicNameValuePair("apiname", "Open_printMsg"));//固定值,不需要修改 nvps.add(new BasicNameValuePair("sn", sn)); nvps.add(new BasicNameValuePair("content", content)); nvps.add(new BasicNameValuePair("times", "1"));//打印联数 CloseableHttpResponse response = null; String result = null; try { post.setEntity(new UrlEncodedFormEntity(nvps, "utf-8")); response = httpClient.execute(post); int statecode = response.getStatusLine().getStatusCode(); if (statecode == 200) { HttpEntity httpentity = response.getEntity(); if (httpentity != null) { //服务器返回的JSON字符串,建议要当做日志记录起来 result = EntityUtils.toString(httpentity); } } } catch (Exception e) { e.printStackTrace(); } finally { try { if (response != null) { response.close(); } } catch (IOException e) { e.printStackTrace(); } try { post.abort(); } catch (Exception e) { e.printStackTrace(); } try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } log.info("打印返回值:" + result); return result; } catch (Exception e) { e.printStackTrace(); log.error("打印异常:" + e.getMessage(), e); } return null; } /** * 标签机专用打印订单接口 * * @param sn 打印机编号 * @return 成功:{"msg":"ok","ret":0,"data":"xxxxxxx_xxxxxxxx_xxxxxxxx","serverExecutedTime":5} * 失败:{"msg":"错误描述","ret":非0,"data":"null","serverExecutedTime":5} */ private static String printLabelMsg(String sn) { String content; content = "1";//设定打印时出纸和打印字体的方向,n 0 或 1,每次设备重启后都会初始化为 0 值设置,1:正向出纸,0:反向出纸, content += "#001 五号桌 1/3可乐鸡翅张三先生 13800138000";//40mm宽度标签纸打印例子,打开注释调用标签打印接口打印 //通过POST请求,发送打印信息到服务器 RequestConfig requestConfig = RequestConfig.custom() .setSocketTimeout(30000)//读取超时 .setConnectTimeout(30000)//连接超时 .build(); CloseableHttpClient httpClient = HttpClients.custom() .setDefaultRequestConfig(requestConfig) .build(); String URL = commonInfoService.findOne(325).getValue(); String USER = commonInfoService.findOne(326).getValue(); String UKEY = commonInfoService.findOne(327).getValue(); HttpPost post = new HttpPost(URL); List nvps = new ArrayList(); nvps.add(new BasicNameValuePair("user", USER)); String STIME = String.valueOf(System.currentTimeMillis() / 1000); nvps.add(new BasicNameValuePair("stime", STIME)); nvps.add(new BasicNameValuePair("sig", signature(USER, UKEY, STIME))); nvps.add(new BasicNameValuePair("apiname", "Open_printLabelMsg"));//固定值,不需要修改 nvps.add(new BasicNameValuePair("sn", sn)); nvps.add(new BasicNameValuePair("content", content)); nvps.add(new BasicNameValuePair("times", "1"));//打印联数 CloseableHttpResponse response = null; String result = null; try { post.setEntity(new UrlEncodedFormEntity(nvps, "utf-8")); response = httpClient.execute(post); int statecode = response.getStatusLine().getStatusCode(); if (statecode == 200) { HttpEntity httpentity = response.getEntity(); if (httpentity != null) { //服务器返回的JSON字符串,建议要当做日志记录起来 result = EntityUtils.toString(httpentity); } } } catch (Exception e) { e.printStackTrace(); } finally { try { if (response != null) { response.close(); } } catch (IOException e) { e.printStackTrace(); } try { post.abort(); } catch (Exception e) { e.printStackTrace(); } try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } return result; } /** * 查询某订单是否打印成功 * * @param orderid 订单id * @return 成功:{"msg":"ok","ret":0,"data":true,"serverExecutedTime":2}//data:true为已打印,false为未打印 * 失败:{"msg":"错误描述","ret":非0, "data":null,"serverExecutedTime":7} */ private static String queryOrderState(String orderid) { //通过POST请求,发送打印信息到服务器 RequestConfig requestConfig = RequestConfig.custom() .setSocketTimeout(30000)//读取超时 .setConnectTimeout(30000)//连接超时 .build(); CloseableHttpClient httpClient = HttpClients.custom() .setDefaultRequestConfig(requestConfig) .build(); String URL = commonInfoService.findOne(325).getValue(); String USER = commonInfoService.findOne(326).getValue(); String UKEY = commonInfoService.findOne(327).getValue(); HttpPost post = new HttpPost(URL); List nvps = new ArrayList(); nvps.add(new BasicNameValuePair("user", USER)); String STIME = String.valueOf(System.currentTimeMillis() / 1000); nvps.add(new BasicNameValuePair("stime", STIME)); nvps.add(new BasicNameValuePair("sig", signature(USER, UKEY, STIME))); nvps.add(new BasicNameValuePair("apiname", "Open_queryOrderState"));//固定值,不需要修改 nvps.add(new BasicNameValuePair("orderid", orderid)); CloseableHttpResponse response = null; String result = null; try { post.setEntity(new UrlEncodedFormEntity(nvps, "utf-8")); response = httpClient.execute(post); int statecode = response.getStatusLine().getStatusCode(); if (statecode == 200) { HttpEntity httpentity = response.getEntity(); if (httpentity != null) { //服务器返回 result = EntityUtils.toString(httpentity); } } } catch (Exception e) { e.printStackTrace(); } finally { try { if (response != null) { response.close(); } } catch (IOException e) { e.printStackTrace(); } try { post.abort(); } catch (Exception e) { e.printStackTrace(); } try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } return result; } /** * 查询指定打印机某天的订单详情 * * @param sn 打印机编号 * @param strdate 时间 "yyyy-MM-dd" * @return 成功:{"msg":"ok","ret":0,"data":{"print":6,"waiting":1},"serverExecutedTime":9}//print已打印,waiting为打印 * 失败:{"msg":"错误描述","ret":非0,"data":"null","serverExecutedTime":5} */ private static String queryOrderInfoByDate(String sn, String strdate) { //通过POST请求,发送打印信息到服务器 RequestConfig requestConfig = RequestConfig.custom() .setSocketTimeout(30000)//读取超时 .setConnectTimeout(30000)//连接超时 .build(); CloseableHttpClient httpClient = HttpClients.custom() .setDefaultRequestConfig(requestConfig) .build(); String URL = commonInfoService.findOne(325).getValue(); String USER = commonInfoService.findOne(326).getValue(); String UKEY = commonInfoService.findOne(327).getValue(); HttpPost post = new HttpPost(URL); List nvps = new ArrayList(); nvps.add(new BasicNameValuePair("user", USER)); String STIME = String.valueOf(System.currentTimeMillis() / 1000); nvps.add(new BasicNameValuePair("stime", STIME)); nvps.add(new BasicNameValuePair("sig", signature(USER, UKEY, STIME))); nvps.add(new BasicNameValuePair("apiname", "Open_queryOrderInfoByDate"));//固定值,不需要修改 nvps.add(new BasicNameValuePair("sn", sn)); nvps.add(new BasicNameValuePair("date", strdate));//yyyy-MM-dd格式 CloseableHttpResponse response = null; String result = null; try { post.setEntity(new UrlEncodedFormEntity(nvps, "utf-8")); response = httpClient.execute(post); int statecode = response.getStatusLine().getStatusCode(); if (statecode == 200) { HttpEntity httpentity = response.getEntity(); if (httpentity != null) { //服务器返回 result = EntityUtils.toString(httpentity); } } } catch (Exception e) { e.printStackTrace(); } finally { try { if (response != null) { response.close(); } } catch (IOException e) { e.printStackTrace(); } try { post.abort(); } catch (Exception e) { e.printStackTrace(); } try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } return result; } /** * 查询打印机的状态 * * @param sn 打印机编号 * @return 成功:{"msg":"ok","ret":0,"data":"状态","serverExecutedTime":4} * 失败:{"msg":"错误描述","ret":非0,"data":"null","serverExecutedTime":5} */ private static String queryPrinterStatus(String sn) { //通过POST请求,发送打印信息到服务器 RequestConfig requestConfig = RequestConfig.custom() .setSocketTimeout(30000)//读取超时 .setConnectTimeout(30000)//连接超时 .build(); CloseableHttpClient httpClient = HttpClients.custom() .setDefaultRequestConfig(requestConfig) .build(); String URL = commonInfoService.findOne(325).getValue(); String USER = commonInfoService.findOne(326).getValue(); String UKEY = commonInfoService.findOne(327).getValue(); HttpPost post = new HttpPost(URL); List nvps = new ArrayList(); nvps.add(new BasicNameValuePair("user", USER)); String STIME = String.valueOf(System.currentTimeMillis() / 1000); nvps.add(new BasicNameValuePair("stime", STIME)); nvps.add(new BasicNameValuePair("sig", signature(USER, UKEY, STIME))); nvps.add(new BasicNameValuePair("apiname", "Open_queryPrinterStatus"));//固定值,不需要修改 nvps.add(new BasicNameValuePair("sn", sn)); CloseableHttpResponse response = null; String result = null; try { post.setEntity(new UrlEncodedFormEntity(nvps, "utf-8")); response = httpClient.execute(post); int statecode = response.getStatusLine().getStatusCode(); if (statecode == 200) { HttpEntity httpentity = response.getEntity(); if (httpentity != null) { //服务器返回 result = EntityUtils.toString(httpentity); } } } catch (Exception e) { e.printStackTrace(); } finally { try { if (response != null) { response.close(); } } catch (IOException e) { e.printStackTrace(); } try { post.abort(); } catch (Exception e) { e.printStackTrace(); } try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } return result; } //生成签名字符串 private static String signature(String USER, String UKEY, String STIME) { String s = DigestUtils.sha1Hex(USER + UKEY + STIME); return s; } }