Prints.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  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. }
  48. }
  49. if (!empty($printIn)) {
  50. $mode->insertAll(array_values($printIn));
  51. }
  52. (new SaasShop)->where("shop_id",$shopId)->update(['line_time' => getDateFull()]);
  53. return success("ok",$param);
  54. } catch (\Throwable $throwable) {
  55. return error($throwable->getMessage());
  56. }
  57. }
  58. /**
  59. * 打印回传
  60. * @param Request $request
  61. * @return Response
  62. */
  63. #[Route(path: "status",methods: "post")]
  64. public function getPrintData(Request $request): Response
  65. {
  66. try {
  67. $param = $this->_valid([
  68. "data.require" => trans("empty.data"),
  69. "param.require" => trans("empty.data"),
  70. ],$request->method());
  71. if (!is_array($param)) return error($param);
  72. $orderId = $param['param']['jobId'];
  73. $order = (new SaasOrderDetail)->where("id",$orderId)->with(['orders'])->findOrEmpty();
  74. $total = ['t0' => 0, 't1' => 0, 't2' => 0, 't3' => 0, 'ta' => 0];
  75. foreach ((new SaasOrderDetail)->where("id",$orderId)->field('create_at,status,count(1) total')->group('status,create_at')->cursor() as $vo)
  76. {
  77. [$total["t{$vo['status']}"] += $vo['total'], $total['ta'] += $vo['total']];
  78. }
  79. $outPut = $param['data']['outputArray'];
  80. $logData = [];
  81. foreach ($outPut as $key=>$val) {
  82. if ($val['type'] == 'stdout') {
  83. $logData[$key] = [
  84. "order_sn" => $param['param']['customFileName'],
  85. "msg" => delNt($val['data'])
  86. ];
  87. } else if ($val['type'] == "exit") {
  88. if ($val['code'] == 0) {
  89. $order->status = 3;
  90. $order->save();
  91. if (($total['t3']+1) == $total['ta']) {
  92. (new SaasOrder)->where("order_sn",$order['order_sn'])->update(['status' => 3,'print_at' => getDateFull()]);
  93. }
  94. }
  95. }
  96. }
  97. $logData = array_values($logData);
  98. if (!empty($logData)) {
  99. }
  100. return success("ok");
  101. } catch (\Throwable $throwable) {
  102. return error($throwable->getMessage());
  103. }
  104. }
  105. }