JRFIDServerService.php 57 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458
  1. <?php
  2. namespace App\Service;
  3. use Illuminate\Support\Facades\Log;
  4. class JRFIDServerService extends Service
  5. {
  6. public function loginRule($data){
  7. if(empty($data['name'])) return [false, '请输入账号!'];
  8. if(empty($data['password'])) return [false, '请输入密码!'];
  9. list($status, $msg) = $this->getToken($data);
  10. if(! $status) return [false, $msg];
  11. return [true, ['data' => $msg]];
  12. }
  13. public function getToken($data){
  14. $account = $data['name'];
  15. $password = $data['password'];
  16. $url = config("j_rfid.login");
  17. $post = [
  18. "name" => $account,
  19. "password" => $password,
  20. "rememberMe" => true
  21. ];
  22. $header = ['Content-Type:application/json'];
  23. list($status, $result) = $this->post_helper($url,$post, $header);
  24. if(! $status) return [$status, $result];
  25. //登录失败
  26. if(! empty($result['errorMessage'])) return [false, $result['errorMessage']];
  27. return [true, $result];
  28. }
  29. public function getSite($data){
  30. $url = config("j_rfid.site");
  31. list($status,$result) = $this->get_helper($url);
  32. if(! $status) return [$status, $result];
  33. if(! empty($result['errorMessage'])) return [false, $result['errorMessage']];
  34. return [true, $result];
  35. }
  36. public function getSite2($data,$param){
  37. $url = config("j_rfid.site2");
  38. $header = ["Authorization: {$param['token']}"];
  39. list($status,$result) = $this->get_helper($url,$header);
  40. if(! $status) return [$status, $result];
  41. if(! empty($result['errorMessage'])) return [false, $result['errorMessage']];
  42. return [true, $result];
  43. }
  44. public function getFlowByProduce($data,$param){
  45. if(empty($data['produce_no'])) return [false, '订单号不能为空'];
  46. if(empty($data['site'])) return [false, '站点不能为空'];
  47. $url = config("j_rfid.get_flow_by_produce");
  48. $post = [
  49. 'produce_no' => $data['produce_no'],
  50. 'site' => $data['site'],
  51. ];
  52. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  53. if(! $status) return [$status, $result];
  54. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  55. return [true, $result['data']];
  56. }
  57. public function getProduceByContract($data,$param){
  58. if(empty($data['contract_no'])) return [false, '合同不能为空'];
  59. if(empty($data['site'])) return [false, '站点不能为空'];
  60. $url = config("j_rfid.get_produce_by_contract");
  61. $post = [
  62. 'contract_no' => $data['contract_no'],
  63. 'site' => $data['site'],
  64. ];
  65. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  66. if(! $status) return [$status, $result];
  67. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  68. return [true, $result['data']];
  69. }
  70. public function getPrintData($data){
  71. if(empty($data['id'])) return [false, '数据ID不能为空'];
  72. if(empty($data['type'])) return [false, '打印数据类型不能为空'];
  73. $size = $data['size'] ?? 9;
  74. $number = $data['number'] ?? 1;
  75. $rsaService = new RsaEncryptionService();
  76. $dataToEncrypt = [
  77. 'id' => $data['id'],
  78. 'type' => $data['type'],
  79. 'size' => $size,
  80. 'number' => $number,
  81. ];
  82. $this->recKSort($dataToEncrypt);
  83. //加密
  84. $encryptedData = $rsaService->encrypt2($dataToEncrypt);
  85. //
  86. // $return2 = $rsaService->decrypt2($return);
  87. //dd($return,$return2);
  88. // $aa = $rsaService->aesDecrypt($aes);
  89. // dd($aes,$aa);
  90. //
  91. // list($status, $encryptedData) = $rsaService->encrypt($dataToEncrypt);
  92. // if(! $status) return [false, $encryptedData];
  93. $url = config("j_rfid.get_print_data");
  94. Log::channel('apiLog')->info('工装云POST:源数据', ["api" => $url , "param" => $dataToEncrypt]);
  95. $post = [
  96. 'body' => $encryptedData,
  97. ];
  98. list($status,$result) = $this->post_helper($url,$post,['Content-Type:application/json']);
  99. if(! $status) return [$status, $result];
  100. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['message']];
  101. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  102. if(! isset($result['furn_pro_flow_dt_a'])) {
  103. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  104. return [false, $error];
  105. }
  106. return [true, $result];
  107. }
  108. public function getPrintData2($data){
  109. if(empty($data['id'])) return [false, '数据ID不能为空'];
  110. if(empty($data['type'])) return [false, '打印数据类型不能为空'];
  111. $size = $data['size'] ?? 9;
  112. $number = $data['number'] ?? 1;
  113. $rsaService = new RsaEncryptionService();
  114. $dataToEncrypt = [
  115. 'id' => $data['id'],
  116. 'type' => $data['type'],
  117. 'size' => $size,
  118. 'number' => $number,
  119. ];
  120. $this->recKSort($dataToEncrypt);
  121. //加密
  122. $encryptedData = $rsaService->encrypt2($dataToEncrypt);
  123. $url = config("j_rfid.get_sep_order_dt_data");
  124. Log::channel('apiLog')->info('工装云POST:源数据', ["api" => $url , "param" => $dataToEncrypt]);
  125. $post = [
  126. 'body' => $encryptedData,
  127. ];
  128. list($status,$result) = $this->post_helper($url,$post,['Content-Type:application/json']);
  129. if(! $status) return [$status, $result];
  130. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['message']];
  131. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  132. if(! isset($result['furn_sep_order_dt_prod'])) {
  133. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  134. return [false, $error];
  135. }
  136. return [true, $result];
  137. }
  138. // 关联数组排序,递归
  139. public function recKSort(&$arr)
  140. {
  141. $kstring = true;
  142. foreach ($arr as $k => &$v) {
  143. if (!is_string($k)) {
  144. $kstring = false;
  145. }
  146. if (is_array($v)) {
  147. $this->recKSort($v);
  148. }
  149. }
  150. if ($kstring) {
  151. ksort($arr);
  152. }
  153. }
  154. public function getTeam($data,$param){
  155. if(empty($data['site'])) return [false, '站点不能为空'];
  156. $header = array_merge($param['header'], ['site:'. $data['site']]);
  157. $url = config("j_rfid.get_team");
  158. $post['rules'] = [
  159. [
  160. 'field' => 'site',
  161. 'option' => 'LIKE_ANYWHERE',
  162. 'values' => [$data['site']]
  163. ],
  164. [
  165. 'field' => 'is_used',
  166. 'option' => 'IN',
  167. 'values' => ['1']
  168. ]
  169. ];
  170. if(isset($data['department_code'])) {
  171. $post['rules'] = array_merge($post['rules'], [[
  172. 'field' => 'department_code',
  173. 'option' => 'IN',
  174. 'values' => [$data['department_code']]
  175. ]]);
  176. }
  177. $post['size'] = $data['size'] ?? 6;
  178. $post['number'] = ($data['number'] ?? 1) - 1;
  179. list($status,$result) = $this->post_helper($url,$post,$header);
  180. if(! $status) return [$status, $result];
  181. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  182. if(! isset($result['content'])) {
  183. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  184. return [false, $error];
  185. }
  186. return [true, $result];
  187. }
  188. public function getDepart($data,$param){
  189. if(empty($data['site'])) return [false, '站点不能为空'];
  190. $header = array_merge($param['header'], ['site:'. $data['site']]);
  191. $url = config("j_rfid.get_depart");
  192. $post['rules'] = [
  193. [
  194. 'field' => 'is_used',
  195. 'option' => 'IN',
  196. 'values' => ['1']
  197. ]
  198. ];
  199. $post['size'] = $data['size'] ?? 6;
  200. $post['number'] = ($data['number'] ?? 1) - 1;
  201. list($status,$result) = $this->post_helper($url,$post,$header);
  202. if(! $status) return [$status, $result];
  203. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  204. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  205. if(! isset($result['content'])) {
  206. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  207. return [false, $error];
  208. }
  209. return [true, $result];
  210. }
  211. public function getProcedureClass($data,$param){
  212. if(empty($data['site'])) return [false, '站点不能为空'];
  213. $header = array_merge($param['header'], ['site:'. $data['site']]);
  214. $url = config("j_rfid.get_procedure_class");
  215. $post['rules'] = [
  216. [
  217. 'field' => 'is_used',
  218. 'option' => 'IN',
  219. 'values' => ['1']
  220. ]
  221. ];
  222. $post['size'] = $data['size'] ?? 6;
  223. $post['number'] = ($data['number'] ?? 1) - 1;
  224. list($status,$result) = $this->post_helper($url,$post,$header);
  225. if(! $status) return [$status, $result];
  226. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  227. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  228. if(! isset($result['content'])) {
  229. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  230. return [false, $error];
  231. }
  232. return [true, $result];
  233. }
  234. public function furnProduceScheduleList($data,$param){
  235. if(empty($data['site'])) return [false, '站点不能为空'];
  236. $header = array_merge($param['header'], ['site:'. $data['site']]);
  237. $url = config("j_rfid.furn_produce_schedule_list");
  238. $sorts = [];
  239. if(empty($data['sorts'])) {
  240. //默认
  241. $sorts = [
  242. [
  243. "property" => "exe_produce_order_a.order_date",
  244. "direction" => "DESC",
  245. "sortOrderNumber" => 2
  246. ]
  247. ];
  248. }
  249. $post = [
  250. "direction" => $data['direction'] ?? "DESC", //排序
  251. "property" => $data['direction'] ?? "id", // 排序
  252. "sorts" => $sorts
  253. ];
  254. $post['size'] = $data['size'] ?? 10;
  255. $post['number'] = ($data['number'] ?? 1) - 1;
  256. $post['rules'] = $data['rules'] ?? [];
  257. list($status,$result) = $this->post_helper($url,$post,$header);
  258. if(! $status) return [$status, $result];
  259. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  260. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  261. if(! isset($result['content'])) {
  262. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  263. return [false, $error];
  264. }
  265. return [true, $result];
  266. }
  267. public function completionOrders($data,$param){
  268. if(empty($data['screenDataList'])) return [false, '完工数据不能为空'];
  269. if(empty($data['site'])) return [false, '站点信息不能为空'];
  270. list($date,$utc_date) = $this->getE8AndUTC();
  271. foreach ($data['screenDataList'] as $key => $value){
  272. if(empty($value['id']) || ! isset($value['type'])) return [false, '完工数据不能为空'];
  273. $data['screenDataList'][$key]['completed_teams_group'] = $data['completed_teams_group'] ?? "";
  274. $data['screenDataList'][$key]['completed_teams_group_show'] = $data['completed_teams_group_show'] ?? "";
  275. $data['screenDataList'][$key]['completed_date'] = $utc_date;
  276. $data['screenDataList'][$key]['completed_date_lt'] = $date;
  277. $data['screenDataList'][$key]['procedure_code'] = $data['procedure_code'] ?? [];
  278. $data['screenDataList'][$key]['site'] = $data['site'] ?? "";
  279. $data['screenDataList'][$key]['data_type'] = "manual";
  280. $data['screenDataList'][$key]['data_type_show'] = "手工新建";
  281. }
  282. $url = config("j_rfid.completion_orders");
  283. $post = [
  284. 'screenDataList' => $data['screenDataList'],
  285. ];
  286. list($status,$result) = $this->post_helper($url,$post, $param['header']);
  287. if(! $status) return [$status, $result];
  288. if(! isset($result['success'])) {
  289. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  290. return [false, $error];
  291. }
  292. return [true, ''];
  293. }
  294. public function scanScreenCompleted($data,$param){
  295. if(empty($data['screenDataList'])) return [false, '完工数据不能为空'];
  296. if(empty($data['site'])) return [false, '站点信息不能为空'];
  297. list($date,$utc_date) = $this->getE8AndUTC();
  298. foreach ($data['screenDataList'] as $key => $value){
  299. if(empty($value['id']) || ! isset($value['type'])) return [false, '完工数据不能为空'];
  300. $data['screenDataList'][$key]['completed_teams_group'] = $data['completed_teams_group'] ?? "";
  301. $data['screenDataList'][$key]['completed_teams_group_show'] = $data['completed_teams_group_show'] ?? "";
  302. $data['screenDataList'][$key]['completed_date'] = $utc_date;
  303. $data['screenDataList'][$key]['completed_date_lt'] = $date;
  304. $data['screenDataList'][$key]['data_type'] = "manual";
  305. $data['screenDataList'][$key]['data_type_show'] = "手工新建";
  306. $data['screenDataList'][$key]['site'] = $data['site'] ?? "";
  307. }
  308. $url = config("j_rfid.scanScreenCompleted");
  309. $post = [
  310. 'screenDataList' => $data['screenDataList'],
  311. ];
  312. list($status,$result) = $this->post_helper($url,$post, $param['header'], 300);
  313. if(! $status) return [$status, $result];
  314. if(! isset($result['success'])) {
  315. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  316. return [false, $error];
  317. }
  318. return [true, ''];
  319. }
  320. public function qualityOrders($data,$param){
  321. if(empty($data['screenDataList'])) return [false, '质检数据不能为空'];
  322. if(empty($data['site'])) return [false, '站点信息不能为空'];
  323. list($date,$utc_date) = $this->getE8AndUTC();
  324. foreach ($data['screenDataList'] as $key => $value){
  325. if(empty($value['id']) || ! isset($value['type'])) return [false, '质检数据不能为空'];
  326. $data['screenDataList'][$key]['qualified_teams_group'] = $data['qualified_teams_group'] ?? "";
  327. $data['screenDataList'][$key]['qualified_teams_group_show'] = $data['qualified_teams_group_show'] ?? "";
  328. $data['screenDataList'][$key]['qualified_date'] = $utc_date;
  329. $data['screenDataList'][$key]['qualified_date_lt'] = $date;
  330. $data['screenDataList'][$key]['procedure_code'] = $data['procedure_code'] ?? [];
  331. $data['screenDataList'][$key]['site'] = $data['site'] ?? "";
  332. }
  333. $url = config("j_rfid.quality_orders");
  334. $post = [
  335. 'screenDataList' => $data['screenDataList'],
  336. ];
  337. list($status,$result) = $this->post_helper($url,$post, $param['header']);
  338. if(! $status) return [$status, $result];
  339. if(! isset($result['success'])) {
  340. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  341. return [false, $error];
  342. }
  343. return [true, ''];
  344. }
  345. public function screenPrint($data){
  346. if(empty($data['id'])) return [false, '数据ID不能为空'];
  347. if(empty($data['type'])) return [false, 'TYPE不能为空'];
  348. $rsaService = new RsaEncryptionService();
  349. $dataToEncrypt = [
  350. 'id' => $data['id'],
  351. 'type' => $data['type']
  352. ];
  353. $this->recKSort($dataToEncrypt);
  354. //加密
  355. $encryptedData = $rsaService->encrypt2($dataToEncrypt);
  356. // list($status, $encryptedData) = $rsaService->encrypt($dataToEncrypt);
  357. // if(! $status) return [false, $encryptedData];
  358. $url = config("j_rfid.screen_print");
  359. Log::channel('apiLog')->info('工装云POST:源数据', ["api" => $url , "param" => $dataToEncrypt]);
  360. $post = [
  361. 'body' => $encryptedData,
  362. ];
  363. list($status,$result) = $this->post_helper($url,$post,['Content-Type:application/json']);
  364. if(! $status) return [$status, $result];
  365. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['message']];
  366. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  367. return [true, ''];
  368. }
  369. public function screenPrintSepData($data){
  370. if(empty($data['id'])) return [false, '数据ID不能为空'];
  371. if(empty($data['type'])) return [false, 'TYPE不能为空'];
  372. $rsaService = new RsaEncryptionService();
  373. $dataToEncrypt = [
  374. 'id' => $data['id'],
  375. 'type' => $data['type']
  376. ];
  377. $this->recKSort($dataToEncrypt);
  378. //加密
  379. $encryptedData = $rsaService->encrypt2($dataToEncrypt);
  380. $url = config("j_rfid.screen_print_sep_data");
  381. Log::channel('apiLog')->info('工装云POST:源数据', ["api" => $url , "param" => $dataToEncrypt]);
  382. $post = [
  383. 'body' => $encryptedData,
  384. ];
  385. list($status,$result) = $this->post_helper($url,$post,['Content-Type:application/json']);
  386. if(! $status) return [$status, $result];
  387. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['message']];
  388. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  389. return [true, ''];
  390. }
  391. public function getE8AndUTC(){
  392. $eastEightTimeZone = new \DateTimeZone('Asia/Shanghai'); // 东八区时区
  393. $utcTimeZone = new \DateTimeZone('UTC'); // UTC时区
  394. // 假设的东八区时间,没有毫秒部分
  395. $dateTimeString = date("Y-m-d H:i:s");
  396. $milliseconds = '000'; // 假设的毫秒值
  397. // 创建DateTime对象并设置时区为东八区
  398. $dateTime = new \DateTime($dateTimeString, $eastEightTimeZone);
  399. // 将DateTime对象转换为UTC时区
  400. $dateTime->setTimezone($utcTimeZone);
  401. // 格式化DateTime对象为ISO 8601格式,并添加毫秒部分
  402. $formattedDate = $dateTime->format('Y-m-d\TH:i:s') . '.' . str_pad($milliseconds, 3, '0', STR_PAD_LEFT) . 'Z';
  403. return [$dateTimeString,$formattedDate];
  404. }
  405. public function getContractDrawRoom($data,$param){
  406. if(empty($data['site'])) return [false, '站点不能为空'];
  407. if(empty($data['type'])) return [false, 'TYPE不能为空'];
  408. $post['site'] = $data['site'];
  409. $post['type'] = $data['type'];
  410. $url = config("j_rfid.get_contract_draw_room");
  411. if(isset($data['contract_no'])) $post['contract_no'] = $data['contract_no'];
  412. if(isset($data['room_no'])) $post['room_no'] = $data['room_no'];
  413. if(isset($data['drawing_no'])) $post['drawing_no'] = $data['drawing_no'];
  414. if(isset($data['procedure_calss'])) $post['procedure_calss'] = $data['procedure_calss'];
  415. $post['size'] = $data['size'] ?? 10;
  416. $post['number'] = $data['number'] ?? 1;
  417. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  418. if(! $status) return [$status, $result];
  419. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  420. if(! isset($result['success'])) {
  421. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  422. return [false, $error];
  423. }
  424. return [true, $result['data']];
  425. }
  426. public function screenGetProFlow($data,$param){
  427. if(empty($data['site'])) return [false, '站点不能为空'];
  428. if(empty($data['contract_no'])) return [false, '合同不能为空'];
  429. if(empty($data['drawing_no'])) return [false, '图号不能为空'];
  430. if(empty($data['room_no'])) return [false, '房间号不能为空'];
  431. $url = config("j_rfid.screen_get_pro_flow");
  432. $post = [
  433. 'site' => $data['site'],
  434. 'contract_no' => $data['contract_no'],
  435. 'drawing_no' => $data['drawing_no'],
  436. 'room_no' => $data['room_no'],
  437. ];
  438. $post['size'] = $data['size'] ?? 10;
  439. $post['number'] = $data['number'] ?? 1;
  440. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  441. if(! $status) return [$status, $result];
  442. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  443. if(! isset($result['success'])) {
  444. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  445. return [false, $error];
  446. }
  447. return [true, $result['data']];
  448. }
  449. public function getDispatchContractDrawRoom($data,$param){
  450. if(empty($data['site'])) return [false, '站点不能为空'];
  451. if(empty($data['type'])) return [false, 'TYPE不能为空'];
  452. $post['site'] = $data['site'];
  453. $post['type'] = $data['type'];
  454. $url = config("j_rfid.get_dispatch_contract_draw_room");
  455. if(isset($data['contract_no'])) $post['contract_no'] = $data['contract_no'];
  456. if(isset($data['room_no'])) $post['room_no'] = $data['room_no'];
  457. if(isset($data['drawing_no'])) $post['drawing_no'] = $data['drawing_no'];
  458. if(isset($data['procedure_calss'])) $post['procedure_calss'] = $data['procedure_calss'];
  459. $post['size'] = $data['size'] ?? 10;
  460. $post['number'] = $data['number'] ?? 1;
  461. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  462. if(! $status) return [$status, $result];
  463. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  464. if(! isset($result['success'])) {
  465. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  466. return [false, $error];
  467. }
  468. return [true, $result['data']];
  469. }
  470. public function screenSend($data,$param){
  471. if(empty($data['screenDataList'])) return [false, '收发货数据不能为空'];
  472. if(empty($data['site']) || empty($data['site_show'])) return [false, '站点信息不能为空'];
  473. list($date,$utc_date) = $this->getE8AndUTC();
  474. foreach ($data['screenDataList'] as $key => $value){
  475. if(empty($value['id']) || ! isset($value['type'])) return [false, '收发货数据不能为空'];
  476. $data['screenDataList'][$key]['delivery_teams_group'] = $data['delivery_teams_group'];
  477. $data['screenDataList'][$key]['delivery_teams_group_show'] = $data['delivery_teams_group_show'];
  478. $data['screenDataList'][$key]['delivery_date'] = $utc_date;
  479. $data['screenDataList'][$key]['delivery_date_lt'] = $date;
  480. $data['screenDataList'][$key]['site'] = $data['site'];
  481. $data['screenDataList'][$key]['site_show'] = $data['site_show'];
  482. }
  483. $url = config("j_rfid.screen_send");
  484. $post = [
  485. 'screenDataList' => $data['screenDataList'],
  486. ];
  487. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  488. if(! $status) return [$status, $result];
  489. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  490. if(! isset($result['success'])) {
  491. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  492. return [false, $error];
  493. }
  494. return [true, ''];
  495. }
  496. public function screenReceipt($data,$param){
  497. if(empty($data['screenDataList'])) return [false, '发货数据不能为空'];
  498. if(empty($data['site']) || empty($data['site_show'])) return [false, '站点信息不能为空'];
  499. list($date,$utc_date) = $this->getE8AndUTC();
  500. foreach ($data['screenDataList'] as $key => $value){
  501. if(empty($value['id']) || ! isset($value['type'])) return [false, '发货数据不能为空'];
  502. // $data['screenDataList'][$key]['delivery_teams_group'] = $data['delivery_teams_group'];
  503. // $data['screenDataList'][$key]['delivery_teams_group_show'] = $data['delivery_teams_group_show'];
  504. $data['screenDataList'][$key]['receipt_date'] = $utc_date;
  505. $data['screenDataList'][$key]['receipt_date_lt'] = $date;
  506. $data['screenDataList'][$key]['site'] = $data['site'];
  507. $data['screenDataList'][$key]['site_show'] = $data['site_show'];
  508. }
  509. $url = config("j_rfid.screenReceipt");
  510. $post = [
  511. 'screenDataList' => $data['screenDataList'],
  512. ];
  513. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  514. if(! $status) return [$status, $result];
  515. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  516. if(! isset($result['success'])) {
  517. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  518. return [false, $error];
  519. }
  520. return [true, ''];
  521. }
  522. public function screenPackage($data,$param){
  523. if(empty($data['screenDataList'])) return [false, '包装数据不能为空'];
  524. if(empty($data['site']) || empty($data['site_show'])) return [false, '站点信息不能为空'];
  525. list($date,$utc_date) = $this->getE8AndUTC();
  526. foreach ($data['screenDataList'] as $key => $value){
  527. if(empty($value['id']) || ! isset($value['type'])) return [false, '包装数据不能为空'];
  528. $data['screenDataList'][$key]['package_teams_group'] = $data['package_teams_group'];
  529. $data['screenDataList'][$key]['package_teams_group_show'] = $data['package_teams_group_show'];
  530. $data['screenDataList'][$key]['package_date'] = $utc_date;
  531. $data['screenDataList'][$key]['package_date_lt'] = $date;
  532. $data['screenDataList'][$key]['site'] = $data['site'];
  533. $data['screenDataList'][$key]['site_show'] = $data['site_show'];
  534. }
  535. $url = config("j_rfid.screen_package");
  536. $post = [
  537. 'screenDataList' => $data['screenDataList'],
  538. ];
  539. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  540. if(! $status) return [$status, $result];
  541. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  542. if(! isset($result['success'])) {
  543. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  544. return [false, $error];
  545. }
  546. return [true, ['box_no' => $result['data'] ?? [], 'package_date' => $date]];
  547. }
  548. public function screenGetPackageData($data,$param){
  549. if(empty($data['site'])) return [false, '站点信息不能为空'];
  550. if(empty($data['contract_no'])) return [false, '合同不能为空'];
  551. // if(empty($data['drawing_no'])) return [false, '图号不能为空'];
  552. // if(empty($data['room_no'])) return [false, '房间号不能为空'];
  553. $size = $data['size'] ?? 10;
  554. $number = $data['number'] ?? 1;
  555. $url = config("j_rfid.screen_get_package_data");
  556. $post = [
  557. 'site' => $data['site'],
  558. 'contract_no' => $data['contract_no'],
  559. 'drawing_no' => $data['drawing_no'] ?? "",
  560. 'room_no' => $data['room_no'] ?? "",
  561. 'size' => $size,
  562. 'number' => $number,
  563. ];
  564. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  565. if(! $status) return [$status, $result];
  566. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  567. if(! isset($result['success'])) {
  568. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  569. return [false, $error];
  570. }
  571. return [true, $result['data']];
  572. }
  573. public function screenGetProDtData($data,$param){
  574. if(empty($data['id'])) return [false, '数据ID不能为空'];
  575. if(empty($data['type'])) return [false, 'TYPE不能为空'];
  576. // if(empty($data['contract_no'])) return [false, '合同不能为空'];
  577. // if(empty($data['drawing_no'])) return [false, '图号不能为空'];
  578. $url = config("j_rfid.screenGetProDtData");
  579. $post = [
  580. 'id' => $data['id'],
  581. 'type' => $data['type'],
  582. 'contract_no' => $data['contract_no'] ?? null,
  583. 'drawing_no' => $data['drawing_no'] ?? null,
  584. ];
  585. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  586. if(! $status) return [$status, $result];
  587. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['message']];
  588. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  589. if(! isset($result['furn_pro_flow_dt_a'])) {
  590. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  591. return [false, $error];
  592. }
  593. return [true, $result];
  594. }
  595. public function screenGetPackageAssem($data,$param){
  596. if(empty($data['id'])) return [false, '数据ID不能为空'];
  597. if(empty($data['type'])) return [false, 'TYPE不能为空'];
  598. if(empty($data['site'])) return [false, '站点不能为空'];
  599. $url = config("j_rfid.screenGetPackageAssem");
  600. $post = [
  601. 'id' => $data['id'],
  602. 'type' => $data['type'],
  603. 'site' => $data['site'],
  604. 'contract_no' => $data['contract_no'] ?? ""
  605. ];
  606. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  607. if(! $status) return [$status, $result];
  608. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['message']];
  609. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  610. if(! isset($result['assembly_list'])) {
  611. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  612. return [false, $error];
  613. }
  614. foreach ($result['assembly_list'] as $key => $value){
  615. foreach ($value['package_assembly_list'] as $kk => $vv){
  616. $result['assembly_list'][$key]['package_assembly_list'][$kk]['package_date'] = $this->changeDateToDateMin($vv['package_date']);
  617. }
  618. }
  619. return [true, $result['assembly_list']];
  620. }
  621. public function screenGetPackageAssemData($data,$param){
  622. if(empty($data['id'])) return [false, '数据ID不能为空'];
  623. if(empty($data['type'])) return [false, 'TYPE不能为空'];
  624. if(empty($data['site'])) return [false, '站点不能为空'];
  625. if(empty($data['contract_no'])) return [false, '合同不能为空'];
  626. $url = config("j_rfid.screenGetPackageAssemData");
  627. $post = [
  628. 'id' => $data['id'],
  629. 'type' => $data['type'],
  630. 'site' => $data['site'],
  631. 'contract_no' => $data['contract_no'] ?? ""
  632. ];
  633. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  634. if(! $status) return [$status, $result];
  635. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['message']];
  636. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  637. if(! isset($result['assembly_list'])) {
  638. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  639. return [false, $error];
  640. }
  641. foreach ($result['assembly_list'] as $key => $value){
  642. foreach ($value['package_assembly_list'] as $kk => $vv){
  643. $result['assembly_list'][$key]['package_assembly_list'][$kk]['package_date'] = $this->changeDateToDateMin($vv['package_date']);
  644. }
  645. }
  646. return [true, $result['assembly_list']];
  647. }
  648. public function screenGetDispatchDtData($data,$param){
  649. if(empty($data['id'])) return [false, '数据ID不能为空'];
  650. if(empty($data['type'])) return [false, 'TYPE不能为空'];
  651. $url = config("j_rfid.screen_get_dispatch_dt_data");
  652. $post = [
  653. 'id' => $data['id'],
  654. 'type' => $data['type'],
  655. 'contract_no' => $data['contract_no'] ?? null,
  656. 'drawing_no' => $data['drawing_no'] ?? null,
  657. 'procedure' => $data['procedure'] ?? null,
  658. ];
  659. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  660. if(! $status) return [$status, $result];
  661. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['message']];
  662. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  663. if(! isset($result['furn_dispatch_product_dt'])) {
  664. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  665. return [false, $error];
  666. }
  667. return [true, $result];
  668. }
  669. public function furnSeparateOrderDtAssemList($data,$param){
  670. if(empty($data['site'])) return [false, '站点不能为空'];
  671. if(empty($data['id'])) return [false, '芯片|组件数据不能为空'];
  672. $header = array_merge($param['header'], ['site:'. $data['site']]);
  673. $url = config("j_rfid.furn_separate_order_dt_assem_list");
  674. $post['rules'] = [
  675. [
  676. 'field' => 'id',
  677. 'option' => 'IN',
  678. 'values' => $data['id']
  679. ],
  680. ];
  681. $post['size'] = $data['size'] ?? 10;
  682. $post['number'] = ($data['number'] ?? 1) - 1;
  683. list($status,$result) = $this->post_helper($url,$post,$header);
  684. if(! $status) return [$status, $result];
  685. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  686. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  687. if(! isset($result['content'])) {
  688. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  689. return [false, $error];
  690. }
  691. return [true, $result];
  692. }
  693. public function screenPackageBySepAssem($data,$param){
  694. if(empty($data['screenDataList'])) return [false, '包装数据不能为空'];
  695. if(empty($data['site']) || empty($data['site_show'])) return [false, '站点信息不能为空'];
  696. list($date,$utc_date) = $this->getE8AndUTC();
  697. foreach ($data['screenDataList'] as $key => $value){
  698. if(empty($value['id']) || ! isset($value['type'])) return [false, '包装数据不能为空'];
  699. $data['screenDataList'][$key]['package_teams_group'] = $data['package_teams_group'];
  700. $data['screenDataList'][$key]['package_teams_group_show'] = $data['package_teams_group_show'];
  701. $data['screenDataList'][$key]['package_date'] = $utc_date;
  702. $data['screenDataList'][$key]['package_date_lt'] = $date;
  703. $data['screenDataList'][$key]['site'] = $data['site'];
  704. $data['screenDataList'][$key]['site_show'] = $data['site_show'];
  705. }
  706. $url = config("j_rfid.screen_package_by_sep_assem");
  707. $post = [
  708. 'screenDataList' => $data['screenDataList'],
  709. ];
  710. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  711. if(! $status) return [$status, $result];
  712. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  713. if(! isset($result['success'])) {
  714. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  715. return [false, $error];
  716. }
  717. return [true, ['box_no' => $result['data'] ?? [], 'package_date' => $date]];
  718. }
  719. public function sendAndReceiptList($data,$param){
  720. if(empty($data['site'])) return [false, '站点不能为空'];
  721. $header = array_merge($param['header'], ['site:'. $data['site']]);
  722. $url = config("j_rfid.sendAndReceiptList");
  723. if(! empty($data['contract_no']) || ! empty($data['no']) || ! empty($data['drawing_no'])) {
  724. $rules = [];
  725. if(! empty($data['contract_no'])) {
  726. $rules[] = [
  727. 'field' => 'contract_no',
  728. 'option' => 'IN',
  729. 'values' => $data['contract_no']
  730. ];
  731. }
  732. if(! empty($data['no'])) {
  733. $rules[] = [
  734. 'field' => 'no',
  735. 'option' => 'LIKE_ANYWHERE',
  736. 'values' => $data['no']
  737. ];
  738. }
  739. if(! empty($data['drawing_no'])) {
  740. $rules[] = [
  741. 'field' => 'drawing_no',
  742. 'option' => 'IN',
  743. 'values' => $data['drawing_no']
  744. ];
  745. }
  746. $post['rules'] = $rules;
  747. }
  748. $post['size'] = $data['size'] ?? 10;
  749. $post['number'] = ($data['number'] ?? 1) - 1;
  750. list($status,$result) = $this->post_helper($url,$post,$header);
  751. if(! $status) return [$status, $result];
  752. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  753. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  754. if(! isset($result['content'])) {
  755. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  756. return [false, $error];
  757. }
  758. return [true, $result];
  759. }
  760. public function sendOrderDtAssemList($data,$param){
  761. if(empty($data['site'])) return [false, '站点不能为空'];
  762. $header = array_merge($param['header'], ['site:'. $data['site']]);
  763. $url = config("j_rfid.sendOrderDtAssemList");
  764. if(! empty($data['send_id']) || ! empty($data['sep_dt_assem_id']) || ! empty($data['contract_no'])) {
  765. $rules = [];
  766. if(! empty($data['send_id'])) {
  767. $rules[] = [
  768. 'field' => 'furn_send_prod_dt.send_id',
  769. 'option' => 'IN',
  770. 'values' => $data['send_id']
  771. ];
  772. }
  773. if(! empty($data['sep_dt_assem_id'])) {
  774. $rules[] = [
  775. 'field' => 'sep_dt_assem_id',
  776. 'option' => 'IN',
  777. 'values' => $data['sep_dt_assem_id']
  778. ];
  779. }
  780. if(! empty($data['contract_no'])) {
  781. $rules[] = [
  782. 'field' => 'furn_send_prod_dt.contract_no',
  783. 'option' => 'NOT_IN',
  784. 'values' => $data['contract_no']
  785. ];
  786. }
  787. $post['rules'] = $rules;
  788. }
  789. $post['size'] = $data['size'] ?? 10;
  790. $post['number'] = ($data['number'] ?? 1) - 1;
  791. list($status,$result) = $this->post_helper($url,$post,$header);
  792. if(! $status) return [$status, $result];
  793. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  794. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  795. if(! isset($result['content'])) {
  796. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  797. return [false, $error];
  798. }
  799. return [true, $result];
  800. }
  801. public function packageList($data,$param){
  802. if(empty($data['site'])) return [false, '站点不能为空'];
  803. $header = array_merge($param['header'], ['site:'. $data['site']]);
  804. $url = config("j_rfid.packageList");
  805. if(! empty($data['drawing_no']) || ! empty($data['contract_no'])) {
  806. $rules = [];
  807. if(! empty($data['drawing_no'])) {
  808. $rules[] = [
  809. 'field' => 'drawing_no',
  810. 'option' => 'IN',
  811. 'values' => $data['drawing_no']
  812. ];
  813. }
  814. if(! empty($data['contract_no'])) {
  815. $rules[] = [
  816. 'field' => 'contract_no',
  817. 'option' => 'IN',
  818. 'values' => $data['contract_no']
  819. ];
  820. }
  821. $post['rules'] = $rules;
  822. }
  823. $post['size'] = $data['size'] ?? 10;
  824. $post['number'] = ($data['number'] ?? 1) - 1;
  825. list($status,$result) = $this->post_helper($url,$post,$header);
  826. if(! $status) return [$status, $result];
  827. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  828. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  829. if(! isset($result['content'])) {
  830. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  831. return [false, $error];
  832. }
  833. return [true, $result];
  834. }
  835. public function screenAutoCreateDispatch($data,$param){
  836. if(empty($data['type'])) return [false, '类型不能为空'];
  837. if(empty($data['id'])) return [false, 'ID不能为空'];
  838. if(empty($data['contract_no'])) return [false, '合同号不能为空'];
  839. if(empty($data['drawing_no'])) return [false, '图号不能为空'];
  840. if(empty($data['procedure'])) return [false, '工序不能为空'];
  841. foreach ($data['procedure'] as $value){
  842. if(empty($value)) return [false, '工序不能为空'];
  843. }
  844. $post = [
  845. 'type' => $data['type'],
  846. 'id' => $data['id'],
  847. 'contract_no' => $data['contract_no'],
  848. 'drawing_no' => $data['drawing_no'],
  849. 'procedure' => $data['procedure'],
  850. ];
  851. $url = config("j_rfid.screenAutoCreateDispatch");
  852. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  853. if(! $status) return [$status, $result];
  854. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  855. if(! isset($result['success'])) {
  856. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  857. return [false, $error];
  858. }
  859. return [true, ''];
  860. }
  861. public function screenGetSepData($data,$param){
  862. if(empty($data['id'])) return [false, '数据ID不能为空'];
  863. if(empty($data['type'])) return [false, 'TYPE不能为空'];
  864. $url = config("j_rfid.screenGetSepData");
  865. $post = [
  866. 'id' => $data['id'],
  867. 'type' => $data['type'],
  868. ];
  869. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  870. if(! $status) return [$status, $result];
  871. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['message']];
  872. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  873. if(! isset($result['furn_sep_order_dt_assem_list'])) {
  874. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  875. return [false, $error];
  876. }
  877. return [true, $result];
  878. }
  879. public function furnSeparateOrderCompList($data,$param){
  880. if(empty($data['site'])) return [false, '站点不能为空'];
  881. $header = array_merge($param['header'], ['site:'. $data['site']]);
  882. $url = config("j_rfid.furnSeparateOrderCompList");
  883. if(! empty($data['drawing_no']) || ! empty($data['contract_no']) || ! empty($data['region']) || ! empty($data['room_no']) || ! empty($data['assembly_name']) || ! empty($data['component'])) {
  884. $rules = [];
  885. if(! empty($data['drawing_no'])) {
  886. $rules[] = [
  887. 'field' => 'exe_sep_order_a.drawing_no',
  888. 'option' => 'IN',
  889. 'values' => $data['drawing_no']
  890. ];
  891. }
  892. if(! empty($data['contract_no'])) {
  893. $rules[] = [
  894. 'field' => 'exe_sep_order_a.contract_no',
  895. 'option' => 'IN',
  896. 'values' => $data['contract_no']
  897. ];
  898. }
  899. if(! empty($data['region'])) {
  900. $rules[] = [
  901. 'field' => 'exe_sep_order_a.region',
  902. 'option' => 'IN',
  903. 'values' => $data['region']
  904. ];
  905. }
  906. if(! empty($data['room_no'])) {
  907. $rules[] = [
  908. 'field' => 'exe_sep_order_dtl_b.room',
  909. 'option' => 'IN',
  910. 'values' => $data['room_no']
  911. ];
  912. }
  913. if(! empty($data['assembly_name'])) {
  914. $rules[] = [
  915. 'field' => 'exe_sep_order_dtl_b.assembly_name',
  916. 'option' => 'IN',
  917. 'values' => $data['assembly_name']
  918. ];
  919. }
  920. if(! empty($data['component'])) {
  921. $rules[] = [
  922. 'field' => 'component',
  923. 'option' => 'IN',
  924. 'values' => $data['component']
  925. ];
  926. }
  927. $post['rules'] = $rules;
  928. }
  929. $post['size'] = $data['size'] ?? 10;
  930. $post['number'] = ($data['number'] ?? 1) - 1;
  931. list($status,$result) = $this->post_helper($url,$post,$header);
  932. if(! $status) return [$status, $result];
  933. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  934. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  935. if(! isset($result['content'])) {
  936. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  937. return [false, $error];
  938. }
  939. return [true, $result];
  940. }
  941. public function furnSeparateOrderDtCompList($data,$param){
  942. if(empty($data['site'])) return [false, '站点不能为空'];
  943. $header = array_merge($param['header'], ['site:'. $data['site']]);
  944. $url = config("j_rfid.furnSeparateOrderDtCompList");
  945. if(! empty($data['drawing_no']) || ! empty($data['contract_no']) || ! empty($data['region']) || ! empty($data['room_no']) || ! empty($data['assembly_name']) || ! empty($data['component'])) {
  946. $rules = [];
  947. if(! empty($data['drawing_no'])) {
  948. $rules[] = [
  949. 'field' => 'furn_sep_order_dt_prod.drawing_no',
  950. 'option' => 'IN',
  951. 'values' => $data['drawing_no']
  952. ];
  953. }
  954. if(! empty($data['contract_no'])) {
  955. $rules[] = [
  956. 'field' => 'furn_sep_order_dt_prod.contact_no',
  957. 'option' => 'IN',
  958. 'values' => $data['contract_no']
  959. ];
  960. }
  961. if(! empty($data['region'])) {
  962. $rules[] = [
  963. 'field' => 'furn_sep_order_dt_prod.region',
  964. 'option' => 'IN',
  965. 'values' => $data['region']
  966. ];
  967. }
  968. if(! empty($data['room_no'])) {
  969. $rules[] = [
  970. 'field' => 'furn_sep_order_dt_assem.room_no',
  971. 'option' => 'IN',
  972. 'values' => $data['room_no']
  973. ];
  974. }
  975. if(! empty($data['assembly_name'])) {
  976. $rules[] = [
  977. 'field' => 'furn_sep_order_dt_assem.assembly_name',
  978. 'option' => 'IN',
  979. 'values' => $data['assembly_name']
  980. ];
  981. }
  982. if(! empty($data['component'])) {
  983. $rules[] = [
  984. 'field' => 'component',
  985. 'option' => 'IN',
  986. 'values' => $data['component']
  987. ];
  988. }
  989. $post['rules'] = $rules;
  990. }
  991. $post['size'] = $data['size'] ?? 10;
  992. $post['number'] = ($data['number'] ?? 1) - 1;
  993. list($status,$result) = $this->post_helper($url,$post,$header);
  994. if(! $status) return [$status, $result];
  995. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  996. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  997. if(! isset($result['content'])) {
  998. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  999. return [false, $error];
  1000. }
  1001. return [true, $result];
  1002. }
  1003. public function getWorkshopData($data,$param){
  1004. if(empty($data['site'])) return [false, '站点不能为空'];
  1005. if(empty($data['type'])) return [false, 'TYPE不能为空'];
  1006. $header = array_merge($param['header'], ['site:'. $data['site']]);
  1007. $url = config("j_rfid.getWorkshopData");
  1008. if(! empty($data['drawing_no'])) $post['drawing_no'] = $data['drawing_no'];
  1009. if(! empty($data['contract_no'])) $post['contract_no'] = $data['contract_no'];
  1010. if(! empty($data['region'])) $post['region'] = $data['region'];
  1011. if(! empty($data['room_no'])) $post['room_no'] = $data['room_no'];
  1012. if(! empty($data['assembly_name'])) $post['assembly_name'] = $data['assembly_name'];
  1013. if(! empty($data['component'])) $post['component'] = $data['component'];
  1014. $post['type'] = $data['type'];
  1015. $post['site'] = $data['site'];
  1016. $post['size'] = $data['size'] ?? 10;
  1017. $post['number'] = $data['number'] ?? 1;
  1018. list($status,$result) = $this->post_helper($url,$post,$header);
  1019. if(! $status) return [$status, $result];
  1020. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['message']];
  1021. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  1022. if(! isset($result['success'])) {
  1023. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  1024. return [false, $error];
  1025. }
  1026. return [true, $result['data']];
  1027. }
  1028. public function screenGetSendData($data,$param){
  1029. if(empty($data['site'])) return [false, '站点不能为空'];
  1030. if(empty($data['type'])) return [false, 'TYPE不能为空'];
  1031. $header = array_merge($param['header'], ['site:'. $data['site']]);
  1032. $url = config("j_rfid.screenGetSendData");
  1033. if(! empty($data['drawing_no'])) $post['drawing_no'] = $data['drawing_no'];
  1034. if(! empty($data['contract_no'])) $post['contract_no'] = $data['contract_no'];
  1035. if(! empty($data['region'])) $post['region'] = $data['region'];
  1036. if(! empty($data['room_no'])) $post['room_no'] = $data['room_no'];
  1037. if(! empty($data['assembly_name'])) $post['assembly_name'] = $data['assembly_name'];
  1038. if(! empty($data['component'])) $post['component'] = $data['component'];
  1039. if(! empty($data['send_no'])) $post['send_no'] = $data['send_no'];
  1040. $post['type'] = $data['type'];
  1041. $post['site'] = $data['site'];
  1042. $post['size'] = $data['size'] ?? 10;
  1043. $post['number'] = $data['number'] ?? 1;
  1044. list($status,$result) = $this->post_helper($url,$post,$header);
  1045. if(! $status) return [$status, $result];
  1046. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['message']];
  1047. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  1048. if(! isset($result['success'])) {
  1049. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  1050. return [false, $error];
  1051. }
  1052. return [true, $result['data']];
  1053. }
  1054. public function furnSendOrderDtCompList($data,$param){
  1055. if(empty($data['site'])) return [false, '站点不能为空'];
  1056. $header = array_merge($param['header'], ['site:'. $data['site']]);
  1057. $url = config("j_rfid.furnSendOrderDtCompList");
  1058. if(! empty($data['drawing_no']) || ! empty($data['contract_no']) || ! empty($data['region']) || ! empty($data['room_no']) || ! empty($data['assembly_name']) || ! empty($data['component'])) {
  1059. $rules = [];
  1060. if(! empty($data['drawing_no'])) {
  1061. $rules[] = [
  1062. 'field' => 'furn_send_assem_dt.drawing_no',
  1063. 'option' => 'IN',
  1064. 'values' => $data['drawing_no']
  1065. ];
  1066. }
  1067. if(! empty($data['contract_no'])) {
  1068. $rules[] = [
  1069. 'field' => 'furn_send_prod_dt.contact_no',
  1070. 'option' => 'IN',
  1071. 'values' => $data['contract_no']
  1072. ];
  1073. }
  1074. if(! empty($data['region'])) {
  1075. $rules[] = [
  1076. 'field' => 'furn_send_assem_dt.region',
  1077. 'option' => 'IN',
  1078. 'values' => $data['region']
  1079. ];
  1080. }
  1081. if(! empty($data['room_no'])) {
  1082. $rules[] = [
  1083. 'field' => 'furn_send_assem_dt.room_no',
  1084. 'option' => 'IN',
  1085. 'values' => $data['room_no']
  1086. ];
  1087. }
  1088. if(! empty($data['assembly_name'])) {
  1089. $rules[] = [
  1090. 'field' => 'furn_send_assem_dt.assembly_name',
  1091. 'option' => 'IN',
  1092. 'values' => $data['assembly_name']
  1093. ];
  1094. }
  1095. if(! empty($data['component'])) {
  1096. $rules[] = [
  1097. 'field' => 'component',
  1098. 'option' => 'IN',
  1099. 'values' => $data['component']
  1100. ];
  1101. }
  1102. $post['rules'] = $rules;
  1103. }
  1104. $post['size'] = $data['size'] ?? 10;
  1105. $post['number'] = ($data['number'] ?? 1) - 1;
  1106. list($status,$result) = $this->post_helper($url,$post,$header);
  1107. if(! $status) return [$status, $result];
  1108. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  1109. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  1110. if(! isset($result['content'])) {
  1111. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  1112. return [false, $error];
  1113. }
  1114. return [true, $result];
  1115. }
  1116. public function post_helper($url, $data, $header = [], $timeout = 20){
  1117. Log::channel('apiLog')->info('工装云POST', ["api" => $url , "param" => $data ,"header" => $header]);
  1118. $ch = curl_init();
  1119. curl_setopt($ch, CURLOPT_URL, $url);
  1120. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  1121. curl_setopt($ch, CURLOPT_ENCODING, '');
  1122. curl_setopt($ch, CURLOPT_POST, 1);
  1123. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
  1124. curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  1125. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  1126. curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
  1127. if(!is_null($data)) curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
  1128. $r = curl_exec($ch);
  1129. if ($r === false) {
  1130. // 获取错误号
  1131. $errorNumber = curl_errno($ch);
  1132. // 获取错误信息
  1133. $errorMessage = curl_error($ch);
  1134. $message = "cURL Error #{$errorNumber}: {$errorMessage}";
  1135. Log::channel('apiLog')->info('工装云POST结果', ["message" => $message]);
  1136. return [false, $message];
  1137. }
  1138. curl_close($ch);
  1139. $return = json_decode($r, true);
  1140. Log::channel('apiLog')->info('工装云POST结果', ["message" => $return]);
  1141. if(! empty($return['message']) && $return['message'] == 'error.unAuthorized') return [0, '登录凭证已失效或者不正确'];
  1142. return [true, $return];
  1143. }
  1144. public function get_helper($url,$header=[],$timeout = 20){
  1145. $ch = curl_init();
  1146. curl_setopt_array($ch, array(
  1147. CURLOPT_URL => $url,
  1148. CURLOPT_RETURNTRANSFER => true,
  1149. CURLOPT_ENCODING => '',
  1150. CURLOPT_MAXREDIRS => 10,
  1151. CURLOPT_TIMEOUT => $timeout,
  1152. CURLOPT_FOLLOWLOCATION => true,
  1153. CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  1154. CURLOPT_CUSTOMREQUEST => 'GET',
  1155. CURLOPT_SSL_VERIFYPEER => false,
  1156. CURLOPT_HTTPHEADER => $header,
  1157. ));
  1158. $r = curl_exec($ch);
  1159. if ($r === false) {
  1160. // 获取错误号
  1161. $errorNumber = curl_errno($ch);
  1162. // 获取错误信息
  1163. $errorMessage = curl_error($ch);
  1164. $message = "cURL Error #{$errorNumber}: {$errorMessage}";
  1165. Log::channel('apiLog')->info('工装云GET', ["message" => $message]);
  1166. return [false, $message];
  1167. }
  1168. curl_close($ch);
  1169. $return = json_decode($r, true);
  1170. Log::channel('apiLog')->info('工装云GET', ["message" => $return]);
  1171. if(! empty($return['message']) && $return['message'] == 'error.unAuthorized') return [0, '登录凭证已失效或者不正常'];
  1172. return [true, $return];
  1173. }
  1174. }