ApiWaimaiPrintServiceImpl.java 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455
  1. package com.ydd.app.service.impl;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  6. import com.ydd.api.PrintApi;
  7. import com.ydd.app.service.ApiWaimaiPrintService;
  8. import com.ydd.common.enums.WaimaiTypeEnums;
  9. import com.ydd.common.exception.CustomException;
  10. import com.ydd.common.utils.DateUtils;
  11. import com.ydd.common.utils.StringUtils;
  12. import com.ydd.module.domain.DspWaimai;
  13. import com.ydd.module.domain.ShopDevice;
  14. import com.ydd.module.domain.WaimaiOrder;
  15. import com.ydd.module.domain.WaimaiOrderDetail;
  16. import com.ydd.module.enums.OrderStatusEnum;
  17. import com.ydd.module.service.*;
  18. import com.ydd.third.common.vo.waimai.eleme.api.entity.order.OActivity;
  19. import com.ydd.third.common.vo.waimai.meituan.MeituanOrderExtraVo;
  20. import com.ydd.third.print.request.*;
  21. import lombok.RequiredArgsConstructor;
  22. import lombok.extern.slf4j.Slf4j;
  23. import org.apache.commons.collections4.CollectionUtils;
  24. import org.apache.commons.compress.utils.Lists;
  25. import org.springframework.beans.factory.annotation.Autowired;
  26. import org.springframework.stereotype.Service;
  27. import java.math.BigDecimal;
  28. import java.util.ArrayList;
  29. import java.util.Date;
  30. import java.util.List;
  31. /**
  32. * Project:lb-server
  33. * Class:
  34. * ApiWaimaiServiceImpl
  35. * Description:TODO
  36. * Time:2021/3/2 17:16
  37. *
  38. * @author zoe
  39. */
  40. @Slf4j
  41. @Service
  42. @RequiredArgsConstructor(onConstructor_ = @Autowired)
  43. public class ApiWaimaiPrintServiceImpl implements ApiWaimaiPrintService {
  44. private final IShopService iShopService;
  45. private final IDspWaimaiService iDspWaimaiService;
  46. private final IWaimaiOrderService iWaimaiOrderService;
  47. private final IWaimaiOrderDetailService iWaimaiOrderDetailService;
  48. private final IShopDeviceService iShopDeviceService;
  49. private final PrintApi unifiedPrintService;
  50. /**
  51. * 打印外卖单
  52. *
  53. * @param waimaiId
  54. */
  55. @Override
  56. public void printWaimai(Long waimaiId) {
  57. //获取所有设备
  58. WaimaiOrder waimaiOrder = iWaimaiOrderService.getById(waimaiId);
  59. List<ShopDevice> deviceDtos = iShopDeviceService.list(new QueryWrapper<ShopDevice>().eq("shop_id", waimaiOrder.getShopId()).eq("status", 1).eq("deleted", 0));
  60. if (CollectionUtils.isEmpty(deviceDtos)) {
  61. throw new CustomException("暂无可用的设备");
  62. }else{
  63. if(deviceDtos.get(0).getOpenOrderPrint()==0){
  64. throw new CustomException("请开启自动接单打印");
  65. }
  66. }
  67. List<PrintDeviceDto> printDeviceDtos = new ArrayList<>();
  68. for (ShopDevice shopDevice : deviceDtos) {
  69. PrintDeviceDto printDeviceDto = new PrintDeviceDto();
  70. BeanUtil.copyProperties(shopDevice, printDeviceDto);
  71. printDeviceDtos.add(printDeviceDto);
  72. }
  73. List<WaimaiOrderDetail> detailList = iWaimaiOrderDetailService.list(new QueryWrapper<WaimaiOrderDetail>().eq("waimai_order_id", waimaiId));
  74. PrintOrderDto printOrderDto = new PrintOrderDto();
  75. BeanUtil.copyProperties(waimaiOrder, printOrderDto);
  76. printOrderDto.setEncryptRecipientPhone(waimaiOrder.getRecipientPhone());
  77. // 取消单
  78. if (waimaiOrder.getStatus().equals(OrderStatusEnum.CANCEL.status)){
  79. printOrderDto.setOrderStatus(OrderStatusEnum.CANCEL.status);
  80. }
  81. if (waimaiOrder.getCaution().contains("收餐人隐私号")){
  82. printOrderDto.setCaution(waimaiOrder.getCaution().substring(0,waimaiOrder.getCaution().indexOf("收餐人隐私号")));
  83. }else {
  84. printOrderDto.setCaution(waimaiOrder.getCaution());
  85. }
  86. if (waimaiOrder.getDeliveryTime()!=0) {
  87. String deliverTimeStr = com.ydd.third.common.utils.DateUtils.format( new Date(waimaiOrder.getDeliveryTime()*1000),"MM月dd日 HH:mm")+"送达";
  88. printOrderDto.setDeliveryTime(deliverTimeStr);
  89. }
  90. List<PrintOrderGoodsDto> goodsDtos = Lists.newArrayList();
  91. for (WaimaiOrderDetail waimaiOrderDetail : detailList) {
  92. PrintOrderGoodsDto printOrderGoodsDto = new PrintOrderGoodsDto();
  93. BeanUtil.copyProperties(waimaiOrderDetail, printOrderGoodsDto);
  94. StringBuilder spec = new StringBuilder();
  95. if(StringUtils.isNotBlank(waimaiOrderDetail.getFoodProperty())){
  96. spec.append(waimaiOrderDetail.getFoodProperty());
  97. }
  98. if(StringUtils.isNotBlank(spec.toString())&&StringUtils.isNotBlank(waimaiOrderDetail.getSpec())){
  99. spec.append(",").append(waimaiOrderDetail.getSpec());
  100. }else if(StringUtils.isBlank(spec.toString())&&StringUtils.isNotBlank(waimaiOrderDetail.getSpec())){
  101. spec.append(waimaiOrderDetail.getSpec());
  102. }
  103. if(StringUtils.isNotBlank(spec.toString())){
  104. printOrderGoodsDto.setFoodName(waimaiOrderDetail.getFoodName()+"("+spec.toString()+")");
  105. }
  106. goodsDtos.add(printOrderGoodsDto);
  107. }
  108. DspWaimai dspWaimai= iDspWaimaiService.getById(waimaiOrder.getWaimaiId());
  109. List<PrintOrderActDto> actDtos = new ArrayList<>();
  110. if(StringUtils.isNotBlank(waimaiOrder.getExtras())){
  111. // JSONObject json = JSON.parseObject(waimaiOrder.getExtras());
  112. if(WaimaiTypeEnums.E_LE_ME.getType().equals(dspWaimai.getType())){
  113. List<OActivity> list = JSONArray.parseArray(waimaiOrder.getExtras(),OActivity.class);
  114. if(CollectionUtils.isNotEmpty(list)){
  115. for(OActivity activity:list){
  116. if(activity!=null){
  117. PrintOrderActDto actDto = new PrintOrderActDto();
  118. actDto.setAmount(activity.getAmount()+"");
  119. actDto.setName(activity.getName());
  120. actDto.setType(activity.getType());
  121. actDtos.add(actDto);
  122. }
  123. }
  124. }
  125. }else if(WaimaiTypeEnums.MEI_TUAN.getType().equals(dspWaimai.getType())){
  126. List<MeituanOrderExtraVo> list =JSONArray.parseArray(waimaiOrder.getExtras(),MeituanOrderExtraVo.class);
  127. if(CollectionUtils.isNotEmpty(list)){
  128. for(MeituanOrderExtraVo vo:list){
  129. if(vo!=null&&vo.getRemark()!=null){
  130. PrintOrderActDto actDto = new PrintOrderActDto();
  131. actDto.setAmount(vo.getReduceFee()+"");
  132. actDto.setType(vo.getType()+"");
  133. actDto.setName(vo.getRemark());
  134. actDtos.add(actDto);
  135. }
  136. }
  137. }
  138. }else if(WaimaiTypeEnums.E_LE_ME_RETAIL.getType().equals(dspWaimai.getType())){
  139. JSONArray array = JSONArray.parseArray(waimaiOrder.getExtras());
  140. if(array!=null&&array.size()>0){
  141. for(int i=0;i<array.size();i++){
  142. JSONObject json1 = array.getJSONObject(i);
  143. PrintOrderActDto actDto = new PrintOrderActDto();
  144. actDto.setAmount(new BigDecimal( json1.getString("fee")).divide(new BigDecimal("100")).toString());
  145. actDto.setName(json1.getString("desc"));
  146. actDto.setType(json1.getString("type")+"");
  147. actDtos.add(actDto);
  148. }
  149. }
  150. }
  151. }
  152. actDtos = MeiTuanConvertPrint.merge(actDtos);
  153. printOrderDto.setActDtos(actDtos);
  154. if(waimaiOrder.getShippingFee()!=null){
  155. printOrderDto.setDeliverFee(waimaiOrder.getShippingFee()+"");
  156. }
  157. if(waimaiOrder.getBoxFee()!=null){
  158. printOrderDto.setBoxFee(waimaiOrder.getBoxFee().toString());
  159. }
  160. printOrderDto.setIsBook(waimaiOrder.getDeliveryTime()>0?1:0);
  161. if(waimaiOrder.getOrderTime()!=null){
  162. printOrderDto.setCreateTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,waimaiOrder.getOrderTime()));
  163. }else {
  164. printOrderDto.setCreateTime(DateUtils.dateTimeNow(DateUtils.YYYY_MM_DD_HH_MM_SS));
  165. }
  166. printOrderDto.setOrderSource(dspWaimai.getName());
  167. printOrderDto.setShopName(waimaiOrder.getPoiName());
  168. printOrderDto.setOrderGoodsDtoList(goodsDtos);
  169. printOrderDto.setRecipientPrivacyPhone(waimaiOrder.getReceiptPrivacyPhone());
  170. if (waimaiOrder.getLogisticsCode()!=null&&!waimaiOrder.getLogisticsCode().equals("0000") && !waimaiOrder.getLogisticsCode().equals("5001") && !waimaiOrder.getLogisticsCode().equals("00009003")){
  171. // String addRess = orderVo.getRecipientAddressDesensitization().replaceAll("\\d+", "*");
  172. printOrderDto.setRecipientAddress(waimaiOrder.getRecipientAddressDesensitization());
  173. }else {
  174. printOrderDto.setRecipientAddress(waimaiOrder.getRecipientAddress());
  175. }
  176. printOrderDto.setOpenQrCode(iShopService.getOpenQrCode(waimaiOrder.getShopId()));
  177. printOrderDto.setQrCode(waimaiOrder.getOutOrderId());
  178. //手动打印, 强制
  179. PrintDto dto = new PrintDto();
  180. dto.setPrintOrderDto(printOrderDto);
  181. dto.setDeviceDtoList(printDeviceDtos);
  182. dto.setIsforce(true);
  183. unifiedPrintService.printOrder(dto);
  184. }
  185. /**
  186. * 打印测试设备外卖单
  187. *
  188. * @param waimaiId
  189. */
  190. @Override
  191. public boolean printTestWaimai(String deviceSn, Long waimaiId,String qrCode) {
  192. WaimaiOrder waimaiOrder = iWaimaiOrderService.getById(waimaiId);
  193. List<ShopDevice> shopDevices = iShopDeviceService.list(
  194. new QueryWrapper<ShopDevice>()
  195. .eq("device_sn", deviceSn)
  196. .eq("status", 1)
  197. // .eq("shop_id","197")
  198. );
  199. if (shopDevices == null) {
  200. return false;
  201. }
  202. if (shopDevices.get(0).getOnlineStatus() == 2) {
  203. return false;
  204. }
  205. PrintDeviceDto printDeviceDto = new PrintDeviceDto();
  206. BeanUtil.copyProperties(shopDevices.get(0), printDeviceDto);
  207. //打印一次
  208. printDeviceDto.setPrintCustomerCount(Integer.parseInt(shopDevices.get(0).getPrintCustomerCount()+""));
  209. printDeviceDto.setPrintMerchantCount(Integer.parseInt(shopDevices.get(0).getPrintMerchantCount()+""));
  210. printDeviceDto.setPrintKitchenCount(Integer.parseInt(shopDevices.get(0).getPrintKitchenCount()+""));
  211. List<WaimaiOrderDetail> detailList = iWaimaiOrderDetailService.list(new QueryWrapper<WaimaiOrderDetail>().eq("waimai_order_id", waimaiId));
  212. PrintOrderDto printOrderDto = new PrintOrderDto();
  213. BeanUtil.copyProperties(waimaiOrder, printOrderDto);
  214. printOrderDto.setEncryptRecipientPhone(waimaiOrder.getRecipientPhone());
  215. if (waimaiOrder.getDeliveryTime()!=0) {
  216. String deliverTimeStr = com.ydd.third.common.utils.DateUtils.format( new Date(waimaiOrder.getDeliveryTime()*1000),"MM月dd日 HH:mm")+"送达";
  217. printOrderDto.setDeliveryTime(deliverTimeStr);
  218. }
  219. List<PrintOrderGoodsDto> goodsDtos = Lists.newArrayList();
  220. for (WaimaiOrderDetail waimaiOrderDetail : detailList) {
  221. PrintOrderGoodsDto printOrderGoodsDto = new PrintOrderGoodsDto();
  222. BeanUtil.copyProperties(waimaiOrderDetail, printOrderGoodsDto);
  223. StringBuilder spec = new StringBuilder();
  224. if(StringUtils.isNotBlank(waimaiOrderDetail.getFoodProperty())){
  225. spec.append(waimaiOrderDetail.getFoodProperty());
  226. }
  227. if(StringUtils.isNotBlank(spec.toString())&&StringUtils.isNotBlank(waimaiOrderDetail.getSpec())){
  228. spec.append(",").append(waimaiOrderDetail.getSpec());
  229. }else if(StringUtils.isBlank(spec.toString())&&StringUtils.isNotBlank(waimaiOrderDetail.getSpec())){
  230. spec.append(waimaiOrderDetail.getSpec());
  231. }
  232. if(StringUtils.isNotBlank(spec.toString())){
  233. printOrderGoodsDto.setFoodName(waimaiOrderDetail.getFoodName()+"("+spec.toString()+")");
  234. }
  235. goodsDtos.add(printOrderGoodsDto);
  236. }
  237. DspWaimai dspWaimai= iDspWaimaiService.getById(waimaiOrder.getWaimaiId());
  238. List<PrintOrderActDto> actDtos = new ArrayList<>();
  239. if(StringUtils.isNotBlank(waimaiOrder.getExtras())){
  240. // JSONObject json = JSON.parseObject(waimaiOrder.getExtras());
  241. if(WaimaiTypeEnums.E_LE_ME.getType().equals(dspWaimai.getType())){
  242. List<OActivity> list = JSONArray.parseArray(waimaiOrder.getExtras(),OActivity.class);
  243. if(CollectionUtils.isNotEmpty(list)){
  244. for(OActivity activity:list){
  245. if(activity!=null){
  246. PrintOrderActDto actDto = new PrintOrderActDto();
  247. actDto.setAmount(activity.getAmount()+"");
  248. actDto.setName(activity.getName());
  249. actDto.setType(activity.getType());
  250. actDtos.add(actDto);
  251. }
  252. }
  253. }
  254. }else if(WaimaiTypeEnums.MEI_TUAN.getType().equals(dspWaimai.getType())){
  255. List<MeituanOrderExtraVo> list =JSONArray.parseArray(waimaiOrder.getExtras(),MeituanOrderExtraVo.class);
  256. if(CollectionUtils.isNotEmpty(list)){
  257. for(MeituanOrderExtraVo vo:list){
  258. if(vo!=null&&vo.getRemark()!=null){
  259. PrintOrderActDto actDto = new PrintOrderActDto();
  260. actDto.setAmount(vo.getReduceFee()+"");
  261. actDto.setName(vo.getRemark());
  262. actDto.setType(vo.getType()+"");
  263. actDtos.add(actDto);
  264. }
  265. }
  266. }
  267. }else if(WaimaiTypeEnums.E_LE_ME_RETAIL.getType().equals(dspWaimai.getType())){
  268. JSONArray array = JSONArray.parseArray(waimaiOrder.getExtras());
  269. if(array!=null&&array.size()>0){
  270. for(int i=0;i<array.size();i++){
  271. JSONObject json1 = array.getJSONObject(i);
  272. PrintOrderActDto actDto = new PrintOrderActDto();
  273. actDto.setAmount(new BigDecimal( json1.getString("fee")).divide(new BigDecimal("100")).toString());
  274. actDto.setName(json1.getString("desc"));
  275. actDto.setType(json1.getString("type")+"");
  276. actDtos.add(actDto);
  277. }
  278. }
  279. }
  280. }
  281. /**
  282. * 发票信息
  283. */
  284. if (StringUtils.isNotBlank(waimaiOrder.getInvoiceTitle())){
  285. printOrderDto.setInvoiceTitle(waimaiOrder.getInvoiceTitle());
  286. }
  287. if (StringUtils.isNotBlank(waimaiOrder.getTaxpayerId())){
  288. printOrderDto.setTaxpayerId(waimaiOrder.getTaxpayerId());
  289. }
  290. actDtos = MeiTuanConvertPrint.merge(actDtos);
  291. printOrderDto.setActDtos(actDtos);
  292. if(waimaiOrder.getShippingFee()!=null){
  293. printOrderDto.setDeliverFee(waimaiOrder.getShippingFee()+"");
  294. }
  295. if(waimaiOrder.getBoxFee()!=null){
  296. printOrderDto.setBoxFee(waimaiOrder.getBoxFee().toString());
  297. }
  298. printOrderDto.setIsBook(waimaiOrder.getDeliveryTime()>0?1:0);
  299. if(waimaiOrder.getOrderTime()!=null){
  300. printOrderDto.setCreateTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,waimaiOrder.getOrderTime()));
  301. }else {
  302. printOrderDto.setCreateTime(DateUtils.dateTimeNow(DateUtils.YYYY_MM_DD_HH_MM_SS));
  303. }
  304. printOrderDto.setOrderSource(dspWaimai.getName());
  305. printOrderDto.setShopName(waimaiOrder.getPoiName());
  306. printOrderDto.setOrderGoodsDtoList(goodsDtos);
  307. // printOrderDto.setOrderStatus(OrderStatusEnum.CANCEL.status);
  308. printOrderDto.setQrCode(qrCode);
  309. if (!waimaiOrder.getLogisticsCode().equals("0000") && !waimaiOrder.getLogisticsCode().equals("5001") && !waimaiOrder.getLogisticsCode().equals("00009003")){
  310. // String addRess = orderVo.getRecipientAddressDesensitization().replaceAll("\\d+", "*");
  311. printOrderDto.setRecipientAddress(waimaiOrder.getRecipientAddressDesensitization());
  312. }else {
  313. printOrderDto.setRecipientAddress(waimaiOrder.getRecipientAddress());
  314. }
  315. printOrderDto.setOpenQrCode(iShopService.getOpenQrCode(waimaiOrder.getShopId()));
  316. //手动打印, 强制
  317. PrintDto dto = new PrintDto();
  318. dto.setPrintOrderDto(printOrderDto);
  319. dto.setPrintDeviceDto(printDeviceDto);
  320. dto.setShopId(waimaiOrder.getShopId());
  321. dto.setIsforce(true);
  322. unifiedPrintService.printTestOrder(dto);
  323. return true;
  324. }
  325. /**
  326. * 打印外卖单
  327. *
  328. * @param waimaiOrder
  329. */
  330. @Override
  331. public void autoPrintWaimai(WaimaiOrder waimaiOrder, List<WaimaiOrderDetail> detailList) {
  332. //获取所有设备
  333. List<ShopDevice> deviceDtos = iShopDeviceService.list(new QueryWrapper<ShopDevice>().eq("shop_id", waimaiOrder.getShopId()).eq("status", 1).eq("open_order_print", 1));
  334. if (CollectionUtils.isEmpty(deviceDtos)) {
  335. return;
  336. }
  337. List<PrintDeviceDto> printDeviceDtos = new ArrayList<>();
  338. for (ShopDevice shopDevice : deviceDtos) {
  339. PrintDeviceDto printDeviceDto = new PrintDeviceDto();
  340. BeanUtil.copyProperties(shopDevice, printDeviceDto);
  341. printDeviceDtos.add(printDeviceDto);
  342. }
  343. PrintOrderDto printOrderDto = new PrintOrderDto();
  344. BeanUtil.copyProperties(waimaiOrder, printOrderDto);
  345. // printOrderDto.setEncryptRecipientPhone(waimaiOrder.getRecipientPhone());
  346. List<PrintOrderGoodsDto> goodsDtos = Lists.newArrayList();
  347. for (WaimaiOrderDetail waimaiOrderDetail : detailList) {
  348. PrintOrderGoodsDto printOrderGoodsDto = new PrintOrderGoodsDto();
  349. BeanUtil.copyProperties(waimaiOrderDetail, printOrderGoodsDto);
  350. log.info("打印菜品:" + JSONObject.toJSONString(printOrderGoodsDto));
  351. goodsDtos.add(printOrderGoodsDto);
  352. }
  353. printOrderDto.setShopName(iShopService.getShopName(waimaiOrder.getShopId()));
  354. printOrderDto.setOrderGoodsDtoList(goodsDtos);
  355. printOrderDto.setRecipientPrivacyPhone(waimaiOrder.getReceiptPrivacyPhone());
  356. printOrderDto.setOpenQrCode(iShopService.getOpenQrCode(waimaiOrder.getShopId()));
  357. printOrderDto.setQrCode(waimaiOrder.getOutOrderId());
  358. //手动打印, 强制
  359. PrintDto dto = new PrintDto();
  360. dto.setPrintOrderDto(printOrderDto);
  361. dto.setDeviceDtoList(printDeviceDtos);
  362. dto.setIsforce(true);
  363. unifiedPrintService.printOrder(dto);
  364. }
  365. @Override
  366. public void autoPrintWaimaiNew(PrintOrderDto printOrderDto, List<WaimaiOrderDetail> detailList,Long shopId,WaimaiOrder waimaiOrder) {
  367. //获取所有设备
  368. List<ShopDevice> deviceDtos = iShopDeviceService.list(new QueryWrapper<ShopDevice>().eq("shop_id", shopId).eq("status", 1).eq("open_order_print", 1));
  369. if (printOrderDto.getOrderStatus() != null){
  370. // 取消订单打印
  371. deviceDtos = iShopDeviceService.list(new QueryWrapper<ShopDevice>().eq("shop_id", shopId).eq("status", 1).eq("open_order_cancel_print", 1).eq("deleted",0));
  372. }
  373. if (CollectionUtils.isEmpty(deviceDtos)) {
  374. return;
  375. }
  376. List<PrintDeviceDto> printDeviceDtos = new ArrayList<>();
  377. for (ShopDevice shopDevice : deviceDtos) {
  378. PrintDeviceDto printDeviceDto = new PrintDeviceDto();
  379. BeanUtil.copyProperties(shopDevice, printDeviceDto);
  380. printDeviceDtos.add(printDeviceDto);
  381. }
  382. // PrintOrderDto printOrderDto = new PrintOrderDto();
  383. // BeanUtil.copyProperties(waimaiOrder, printOrderDto);
  384. List<PrintOrderGoodsDto> goodsDtos = Lists.newArrayList();
  385. for (WaimaiOrderDetail waimaiOrderDetail : detailList) {
  386. PrintOrderGoodsDto printOrderGoodsDto = new PrintOrderGoodsDto();
  387. BeanUtil.copyProperties(waimaiOrderDetail, printOrderGoodsDto);
  388. StringBuilder spec = new StringBuilder();
  389. if(StringUtils.isNotBlank(waimaiOrderDetail.getFoodProperty())){
  390. spec.append(waimaiOrderDetail.getFoodProperty());
  391. }
  392. if(StringUtils.isNotBlank(spec.toString())&&StringUtils.isNotBlank(waimaiOrderDetail.getSpec())){
  393. spec.append(",").append(waimaiOrderDetail.getSpec());
  394. }else if(StringUtils.isBlank(spec.toString())&&StringUtils.isNotBlank(waimaiOrderDetail.getSpec())){
  395. spec.append(waimaiOrderDetail.getSpec());
  396. }
  397. if(StringUtils.isNotBlank(spec.toString())){
  398. printOrderGoodsDto.setFoodName(waimaiOrderDetail.getFoodName()+"("+spec.toString()+")");
  399. }
  400. log.info("打印菜品:" + JSONObject.toJSONString(printOrderGoodsDto));
  401. goodsDtos.add(printOrderGoodsDto);
  402. }
  403. // printOrderDto.setShopName(iShopService.getShopName(waimaiOrder.getShopId()));
  404. printOrderDto.setOrderGoodsDtoList(goodsDtos);
  405. // 发票信息
  406. if (StringUtils.isNotBlank(waimaiOrder.getInvoiceTitle())){
  407. printOrderDto.setInvoiceTitle(waimaiOrder.getInvoiceTitle());
  408. }
  409. if (StringUtils.isNotBlank(waimaiOrder.getTaxpayerId())){
  410. printOrderDto.setTaxpayerId(waimaiOrder.getTaxpayerId());
  411. }
  412. printOrderDto.setRecipientPrivacyPhone(waimaiOrder.getReceiptPrivacyPhone());
  413. printOrderDto.setEncryptRecipientPhone(waimaiOrder.getRecipientPhone());
  414. printOrderDto.setOpenQrCode(iShopService.getOpenQrCode(waimaiOrder.getShopId()));
  415. printOrderDto.setQrCode(waimaiOrder.getOutOrderId());
  416. //手动打印, 强制
  417. PrintDto dto = new PrintDto();
  418. dto.setPrintOrderDto(printOrderDto);
  419. dto.setDeviceDtoList(printDeviceDtos);
  420. dto.setIsforce(true);
  421. unifiedPrintService.printOrder(dto);
  422. }
  423. }