Prints.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <?php
  2. namespace app\controller\exe;
  3. use app\extra\basic\Base;
  4. use app\middleware\ExeMiddleware;
  5. use app\model\saas\SaasOrder;
  6. use app\model\saas\SaasOrderDetail;
  7. use app\model\saas\SaasPrintClient;
  8. use app\model\saas\SaasShop;
  9. use LinFly\Annotation\Route\Controller;
  10. use LinFly\Annotation\Route\Middleware;
  11. use LinFly\Annotation\Route\Route;
  12. use support\Request;
  13. use support\Response;
  14. #[Controller(prefix: "/exe/prints"),Middleware(ExeMiddleware::class)]
  15. class Prints extends Base
  16. {
  17. protected array $noNeedLogin = ["getPrintData"];
  18. /**
  19. * 回传打印机信息
  20. * @param Request $request
  21. * @return Response
  22. */
  23. #[Route(path: "set",methods: "post")]
  24. public function getPrintList(Request $request): Response
  25. {
  26. try {
  27. $param = $request->post();
  28. if (empty($param)) return errorTrans("empty.data");
  29. $shopId = $request->uuid;
  30. $mode = (new SaasPrintClient);
  31. $printIn = [];
  32. foreach ($param as $key=>$val)
  33. {
  34. $param[$key] = $val;
  35. $printId = strToUniqueNumberV4(trim($val['name']));
  36. $param[$key]['key'] = "{$printId}-{$shopId}";
  37. $param[$key]['userKey'] = $printId;
  38. $printData = $mode->where("code",$printId)->where("shop_id",$shopId)->findOrEmpty();
  39. if ($printData->isEmpty()) {
  40. $printIn[$key] = [
  41. "shop_id" => $shopId,
  42. "code" => $printId,
  43. "name" => $val['name'],
  44. "ipaddress" => $val['ipAddress'],
  45. "print_status" => $val['status'],
  46. ];
  47. } else {
  48. $printData->ipaddress = $val['ipAddress'];
  49. $printData->print_status = $val['status'];
  50. $printData->save();
  51. }
  52. }
  53. if (!empty($printIn)) {
  54. $mode->insertAll(array_values($printIn));
  55. }
  56. (new SaasShop)->where("shop_id",$shopId)->update(['line_time' => getDateFull()]);
  57. return success("ok",$param);
  58. } catch (\Throwable $throwable) {
  59. return error($throwable->getMessage());
  60. }
  61. }
  62. /**
  63. * 打印识别
  64. * @return Response
  65. */
  66. #[Route(path: "error",methods: "post")]
  67. public function getPrintError(Request $request): Response
  68. {
  69. try {
  70. echo getDateFull()."===打印出错\n";
  71. print_r($request->all());
  72. $param = $this->_valid([
  73. "data.require" => trans("empty.data"),
  74. "param.require" => trans("empty.data"),
  75. ],$request->method());
  76. if (!is_array($param)) return error($param);
  77. echo getDateFull()."===打印出错\n";
  78. print_r($param);
  79. $orderId = $param['param']['jobId'];
  80. return success("ok");
  81. } catch (\Throwable $throwable) {
  82. return error($throwable->getMessage());
  83. }
  84. }
  85. /**
  86. * 打印回传
  87. * @param Request $request
  88. * @return Response
  89. */
  90. #[Route(path: "status",methods: "post")]
  91. public function getPrintData(Request $request): Response
  92. {
  93. try {
  94. $param = $this->_valid([
  95. "data.require" => trans("empty.data"),
  96. "param.require" => trans("empty.data"),
  97. ],$request->method());
  98. if (!is_array($param)) return error($param);
  99. $orderId = $param['param']['jobId'];
  100. $order = (new SaasOrderDetail)->where("id",$orderId)->with(['orders'])->findOrEmpty();
  101. $total = ['t0' => 0, 't1' => 0, 't2' => 0, 't3' => 0, 'ta' => 0];
  102. foreach ((new SaasOrderDetail)->where("id",$orderId)->field('create_at,status,count(1) total')->group('status,create_at')->cursor() as $vo)
  103. {
  104. [$total["t{$vo['status']}"] += $vo['total'], $total['ta'] += $vo['total']];
  105. }
  106. if (isset($param['data']['success'])) {
  107. if ($param['data']['success']) { // 打印成功
  108. $order->status = 3;
  109. $order->save();
  110. if (($total['t3']+1) == $total['ta']) {
  111. (new SaasOrder)->where("order_sn",$order['order_sn'])->update(['status' => 3,'print_at' => getDateFull()]);
  112. }
  113. } else { // 打印失败
  114. }
  115. }
  116. // $outPut = $param['data']['outputArray'];
  117. // $logData = [];
  118. // foreach ($outPut as $key=>$val) {
  119. // if ($val['type'] == 'stdout') {
  120. // $logData[$key] = [
  121. // "order_sn" => $param['param']['customFileName'],
  122. // "msg" => delNt($val['data'])
  123. // ];
  124. // } else if ($val['type'] == "exit") {
  125. // if ($val['code'] == 0) {
  126. // $order->status = 3;
  127. // $order->save();
  128. // if (($total['t3']+1) == $total['ta']) {
  129. // (new SaasOrder)->where("order_sn",$order['order_sn'])->update(['status' => 3,'print_at' => getDateFull()]);
  130. // }
  131. // }
  132. // }
  133. // }
  134. // $logData = array_values($logData);
  135. // if (!empty($logData)) {
  136. // }
  137. return success("ok");
  138. } catch (\Throwable $throwable) {
  139. return error($throwable->getMessage());
  140. }
  141. }
  142. }