JRFIDServerService.php 57 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456
  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]['site'] = $data['site'] ?? "";
  305. }
  306. $url = config("j_rfid.scanScreenCompleted");
  307. $post = [
  308. 'screenDataList' => $data['screenDataList'],
  309. ];
  310. list($status,$result) = $this->post_helper($url,$post, $param['header']);
  311. if(! $status) return [$status, $result];
  312. if(! isset($result['success'])) {
  313. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  314. return [false, $error];
  315. }
  316. return [true, ''];
  317. }
  318. public function qualityOrders($data,$param){
  319. if(empty($data['screenDataList'])) return [false, '质检数据不能为空'];
  320. if(empty($data['site'])) return [false, '站点信息不能为空'];
  321. list($date,$utc_date) = $this->getE8AndUTC();
  322. foreach ($data['screenDataList'] as $key => $value){
  323. if(empty($value['id']) || ! isset($value['type'])) return [false, '质检数据不能为空'];
  324. $data['screenDataList'][$key]['qualified_teams_group'] = $data['qualified_teams_group'] ?? "";
  325. $data['screenDataList'][$key]['qualified_teams_group_show'] = $data['qualified_teams_group_show'] ?? "";
  326. $data['screenDataList'][$key]['qualified_date'] = $utc_date;
  327. $data['screenDataList'][$key]['qualified_date_lt'] = $date;
  328. $data['screenDataList'][$key]['procedure_code'] = $data['procedure_code'] ?? [];
  329. $data['screenDataList'][$key]['site'] = $data['site'] ?? "";
  330. }
  331. $url = config("j_rfid.quality_orders");
  332. $post = [
  333. 'screenDataList' => $data['screenDataList'],
  334. ];
  335. list($status,$result) = $this->post_helper($url,$post, $param['header']);
  336. if(! $status) return [$status, $result];
  337. if(! isset($result['success'])) {
  338. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  339. return [false, $error];
  340. }
  341. return [true, ''];
  342. }
  343. public function screenPrint($data){
  344. if(empty($data['id'])) return [false, '数据ID不能为空'];
  345. if(empty($data['type'])) return [false, 'TYPE不能为空'];
  346. $rsaService = new RsaEncryptionService();
  347. $dataToEncrypt = [
  348. 'id' => $data['id'],
  349. 'type' => $data['type']
  350. ];
  351. $this->recKSort($dataToEncrypt);
  352. //加密
  353. $encryptedData = $rsaService->encrypt2($dataToEncrypt);
  354. // list($status, $encryptedData) = $rsaService->encrypt($dataToEncrypt);
  355. // if(! $status) return [false, $encryptedData];
  356. $url = config("j_rfid.screen_print");
  357. Log::channel('apiLog')->info('工装云POST:源数据', ["api" => $url , "param" => $dataToEncrypt]);
  358. $post = [
  359. 'body' => $encryptedData,
  360. ];
  361. list($status,$result) = $this->post_helper($url,$post,['Content-Type:application/json']);
  362. if(! $status) return [$status, $result];
  363. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['message']];
  364. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  365. return [true, ''];
  366. }
  367. public function screenPrintSepData($data){
  368. if(empty($data['id'])) return [false, '数据ID不能为空'];
  369. if(empty($data['type'])) return [false, 'TYPE不能为空'];
  370. $rsaService = new RsaEncryptionService();
  371. $dataToEncrypt = [
  372. 'id' => $data['id'],
  373. 'type' => $data['type']
  374. ];
  375. $this->recKSort($dataToEncrypt);
  376. //加密
  377. $encryptedData = $rsaService->encrypt2($dataToEncrypt);
  378. $url = config("j_rfid.screen_print_sep_data");
  379. Log::channel('apiLog')->info('工装云POST:源数据', ["api" => $url , "param" => $dataToEncrypt]);
  380. $post = [
  381. 'body' => $encryptedData,
  382. ];
  383. list($status,$result) = $this->post_helper($url,$post,['Content-Type:application/json']);
  384. if(! $status) return [$status, $result];
  385. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['message']];
  386. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  387. return [true, ''];
  388. }
  389. public function getE8AndUTC(){
  390. $eastEightTimeZone = new \DateTimeZone('Asia/Shanghai'); // 东八区时区
  391. $utcTimeZone = new \DateTimeZone('UTC'); // UTC时区
  392. // 假设的东八区时间,没有毫秒部分
  393. $dateTimeString = date("Y-m-d H:i:s");
  394. $milliseconds = '000'; // 假设的毫秒值
  395. // 创建DateTime对象并设置时区为东八区
  396. $dateTime = new \DateTime($dateTimeString, $eastEightTimeZone);
  397. // 将DateTime对象转换为UTC时区
  398. $dateTime->setTimezone($utcTimeZone);
  399. // 格式化DateTime对象为ISO 8601格式,并添加毫秒部分
  400. $formattedDate = $dateTime->format('Y-m-d\TH:i:s') . '.' . str_pad($milliseconds, 3, '0', STR_PAD_LEFT) . 'Z';
  401. return [$dateTimeString,$formattedDate];
  402. }
  403. public function getContractDrawRoom($data,$param){
  404. if(empty($data['site'])) return [false, '站点不能为空'];
  405. if(empty($data['type'])) return [false, 'TYPE不能为空'];
  406. $post['site'] = $data['site'];
  407. $post['type'] = $data['type'];
  408. $url = config("j_rfid.get_contract_draw_room");
  409. if(isset($data['contract_no'])) $post['contract_no'] = $data['contract_no'];
  410. if(isset($data['room_no'])) $post['room_no'] = $data['room_no'];
  411. if(isset($data['drawing_no'])) $post['drawing_no'] = $data['drawing_no'];
  412. if(isset($data['procedure_calss'])) $post['procedure_calss'] = $data['procedure_calss'];
  413. $post['size'] = $data['size'] ?? 10;
  414. $post['number'] = $data['number'] ?? 1;
  415. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  416. if(! $status) return [$status, $result];
  417. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  418. if(! isset($result['success'])) {
  419. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  420. return [false, $error];
  421. }
  422. return [true, $result['data']];
  423. }
  424. public function screenGetProFlow($data,$param){
  425. if(empty($data['site'])) return [false, '站点不能为空'];
  426. if(empty($data['contract_no'])) return [false, '合同不能为空'];
  427. if(empty($data['drawing_no'])) return [false, '图号不能为空'];
  428. if(empty($data['room_no'])) return [false, '房间号不能为空'];
  429. $url = config("j_rfid.screen_get_pro_flow");
  430. $post = [
  431. 'site' => $data['site'],
  432. 'contract_no' => $data['contract_no'],
  433. 'drawing_no' => $data['drawing_no'],
  434. 'room_no' => $data['room_no'],
  435. ];
  436. $post['size'] = $data['size'] ?? 10;
  437. $post['number'] = $data['number'] ?? 1;
  438. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  439. if(! $status) return [$status, $result];
  440. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  441. if(! isset($result['success'])) {
  442. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  443. return [false, $error];
  444. }
  445. return [true, $result['data']];
  446. }
  447. public function getDispatchContractDrawRoom($data,$param){
  448. if(empty($data['site'])) return [false, '站点不能为空'];
  449. if(empty($data['type'])) return [false, 'TYPE不能为空'];
  450. $post['site'] = $data['site'];
  451. $post['type'] = $data['type'];
  452. $url = config("j_rfid.get_dispatch_contract_draw_room");
  453. if(isset($data['contract_no'])) $post['contract_no'] = $data['contract_no'];
  454. if(isset($data['room_no'])) $post['room_no'] = $data['room_no'];
  455. if(isset($data['drawing_no'])) $post['drawing_no'] = $data['drawing_no'];
  456. if(isset($data['procedure_calss'])) $post['procedure_calss'] = $data['procedure_calss'];
  457. $post['size'] = $data['size'] ?? 10;
  458. $post['number'] = $data['number'] ?? 1;
  459. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  460. if(! $status) return [$status, $result];
  461. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  462. if(! isset($result['success'])) {
  463. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  464. return [false, $error];
  465. }
  466. return [true, $result['data']];
  467. }
  468. public function screenSend($data,$param){
  469. if(empty($data['screenDataList'])) return [false, '收发货数据不能为空'];
  470. if(empty($data['site']) || empty($data['site_show'])) return [false, '站点信息不能为空'];
  471. list($date,$utc_date) = $this->getE8AndUTC();
  472. foreach ($data['screenDataList'] as $key => $value){
  473. if(empty($value['id']) || ! isset($value['type'])) return [false, '收发货数据不能为空'];
  474. $data['screenDataList'][$key]['delivery_teams_group'] = $data['delivery_teams_group'];
  475. $data['screenDataList'][$key]['delivery_teams_group_show'] = $data['delivery_teams_group_show'];
  476. $data['screenDataList'][$key]['delivery_date'] = $utc_date;
  477. $data['screenDataList'][$key]['delivery_date_lt'] = $date;
  478. $data['screenDataList'][$key]['site'] = $data['site'];
  479. $data['screenDataList'][$key]['site_show'] = $data['site_show'];
  480. }
  481. $url = config("j_rfid.screen_send");
  482. $post = [
  483. 'screenDataList' => $data['screenDataList'],
  484. ];
  485. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  486. if(! $status) return [$status, $result];
  487. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  488. if(! isset($result['success'])) {
  489. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  490. return [false, $error];
  491. }
  492. return [true, ''];
  493. }
  494. public function screenReceipt($data,$param){
  495. if(empty($data['screenDataList'])) return [false, '发货数据不能为空'];
  496. if(empty($data['site']) || empty($data['site_show'])) return [false, '站点信息不能为空'];
  497. list($date,$utc_date) = $this->getE8AndUTC();
  498. foreach ($data['screenDataList'] as $key => $value){
  499. if(empty($value['id']) || ! isset($value['type'])) return [false, '发货数据不能为空'];
  500. // $data['screenDataList'][$key]['delivery_teams_group'] = $data['delivery_teams_group'];
  501. // $data['screenDataList'][$key]['delivery_teams_group_show'] = $data['delivery_teams_group_show'];
  502. $data['screenDataList'][$key]['receipt_date'] = $utc_date;
  503. $data['screenDataList'][$key]['receipt_date_lt'] = $date;
  504. $data['screenDataList'][$key]['site'] = $data['site'];
  505. $data['screenDataList'][$key]['site_show'] = $data['site_show'];
  506. }
  507. $url = config("j_rfid.screenReceipt");
  508. $post = [
  509. 'screenDataList' => $data['screenDataList'],
  510. ];
  511. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  512. if(! $status) return [$status, $result];
  513. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  514. if(! isset($result['success'])) {
  515. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  516. return [false, $error];
  517. }
  518. return [true, ''];
  519. }
  520. public function screenPackage($data,$param){
  521. if(empty($data['screenDataList'])) return [false, '包装数据不能为空'];
  522. if(empty($data['site']) || empty($data['site_show'])) return [false, '站点信息不能为空'];
  523. list($date,$utc_date) = $this->getE8AndUTC();
  524. foreach ($data['screenDataList'] as $key => $value){
  525. if(empty($value['id']) || ! isset($value['type'])) return [false, '包装数据不能为空'];
  526. $data['screenDataList'][$key]['package_teams_group'] = $data['package_teams_group'];
  527. $data['screenDataList'][$key]['package_teams_group_show'] = $data['package_teams_group_show'];
  528. $data['screenDataList'][$key]['package_date'] = $utc_date;
  529. $data['screenDataList'][$key]['package_date_lt'] = $date;
  530. $data['screenDataList'][$key]['site'] = $data['site'];
  531. $data['screenDataList'][$key]['site_show'] = $data['site_show'];
  532. }
  533. $url = config("j_rfid.screen_package");
  534. $post = [
  535. 'screenDataList' => $data['screenDataList'],
  536. ];
  537. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  538. if(! $status) return [$status, $result];
  539. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  540. if(! isset($result['success'])) {
  541. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  542. return [false, $error];
  543. }
  544. return [true, ['box_no' => $result['data'] ?? [], 'package_date' => $date]];
  545. }
  546. public function screenGetPackageData($data,$param){
  547. if(empty($data['site'])) return [false, '站点信息不能为空'];
  548. if(empty($data['contract_no'])) return [false, '合同不能为空'];
  549. // if(empty($data['drawing_no'])) return [false, '图号不能为空'];
  550. // if(empty($data['room_no'])) return [false, '房间号不能为空'];
  551. $size = $data['size'] ?? 10;
  552. $number = $data['number'] ?? 1;
  553. $url = config("j_rfid.screen_get_package_data");
  554. $post = [
  555. 'site' => $data['site'],
  556. 'contract_no' => $data['contract_no'],
  557. 'drawing_no' => $data['drawing_no'] ?? "",
  558. 'room_no' => $data['room_no'] ?? "",
  559. 'size' => $size,
  560. 'number' => $number,
  561. ];
  562. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  563. if(! $status) return [$status, $result];
  564. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  565. if(! isset($result['success'])) {
  566. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  567. return [false, $error];
  568. }
  569. return [true, $result['data']];
  570. }
  571. public function screenGetProDtData($data,$param){
  572. if(empty($data['id'])) return [false, '数据ID不能为空'];
  573. if(empty($data['type'])) return [false, 'TYPE不能为空'];
  574. // if(empty($data['contract_no'])) return [false, '合同不能为空'];
  575. // if(empty($data['drawing_no'])) return [false, '图号不能为空'];
  576. $url = config("j_rfid.screenGetProDtData");
  577. $post = [
  578. 'id' => $data['id'],
  579. 'type' => $data['type'],
  580. 'contract_no' => $data['contract_no'] ?? null,
  581. 'drawing_no' => $data['drawing_no'] ?? null,
  582. ];
  583. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  584. if(! $status) return [$status, $result];
  585. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['message']];
  586. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  587. if(! isset($result['furn_pro_flow_dt_a'])) {
  588. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  589. return [false, $error];
  590. }
  591. return [true, $result];
  592. }
  593. public function screenGetPackageAssem($data,$param){
  594. if(empty($data['id'])) return [false, '数据ID不能为空'];
  595. if(empty($data['type'])) return [false, 'TYPE不能为空'];
  596. if(empty($data['site'])) return [false, '站点不能为空'];
  597. $url = config("j_rfid.screenGetPackageAssem");
  598. $post = [
  599. 'id' => $data['id'],
  600. 'type' => $data['type'],
  601. 'site' => $data['site'],
  602. 'contract_no' => $data['contract_no'] ?? ""
  603. ];
  604. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  605. if(! $status) return [$status, $result];
  606. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['message']];
  607. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  608. if(! isset($result['assembly_list'])) {
  609. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  610. return [false, $error];
  611. }
  612. foreach ($result['assembly_list'] as $key => $value){
  613. foreach ($value['package_assembly_list'] as $kk => $vv){
  614. $result['assembly_list'][$key]['package_assembly_list'][$kk]['package_date'] = $this->changeDateToDateMin($vv['package_date']);
  615. }
  616. }
  617. return [true, $result['assembly_list']];
  618. }
  619. public function screenGetPackageAssemData($data,$param){
  620. if(empty($data['id'])) return [false, '数据ID不能为空'];
  621. if(empty($data['type'])) return [false, 'TYPE不能为空'];
  622. if(empty($data['site'])) return [false, '站点不能为空'];
  623. if(empty($data['contract_no'])) return [false, '合同不能为空'];
  624. $url = config("j_rfid.screenGetPackageAssemData");
  625. $post = [
  626. 'id' => $data['id'],
  627. 'type' => $data['type'],
  628. 'site' => $data['site'],
  629. 'contract_no' => $data['contract_no'] ?? ""
  630. ];
  631. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  632. if(! $status) return [$status, $result];
  633. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['message']];
  634. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  635. if(! isset($result['assembly_list'])) {
  636. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  637. return [false, $error];
  638. }
  639. foreach ($result['assembly_list'] as $key => $value){
  640. foreach ($value['package_assembly_list'] as $kk => $vv){
  641. $result['assembly_list'][$key]['package_assembly_list'][$kk]['package_date'] = $this->changeDateToDateMin($vv['package_date']);
  642. }
  643. }
  644. return [true, $result['assembly_list']];
  645. }
  646. public function screenGetDispatchDtData($data,$param){
  647. if(empty($data['id'])) return [false, '数据ID不能为空'];
  648. if(empty($data['type'])) return [false, 'TYPE不能为空'];
  649. $url = config("j_rfid.screen_get_dispatch_dt_data");
  650. $post = [
  651. 'id' => $data['id'],
  652. 'type' => $data['type'],
  653. 'contract_no' => $data['contract_no'] ?? null,
  654. 'drawing_no' => $data['drawing_no'] ?? null,
  655. 'procedure' => $data['procedure'] ?? null,
  656. ];
  657. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  658. if(! $status) return [$status, $result];
  659. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['message']];
  660. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  661. if(! isset($result['furn_dispatch_product_dt'])) {
  662. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  663. return [false, $error];
  664. }
  665. return [true, $result];
  666. }
  667. public function furnSeparateOrderDtAssemList($data,$param){
  668. if(empty($data['site'])) return [false, '站点不能为空'];
  669. if(empty($data['id'])) return [false, '芯片|组件数据不能为空'];
  670. $header = array_merge($param['header'], ['site:'. $data['site']]);
  671. $url = config("j_rfid.furn_separate_order_dt_assem_list");
  672. $post['rules'] = [
  673. [
  674. 'field' => 'id',
  675. 'option' => 'IN',
  676. 'values' => $data['id']
  677. ],
  678. ];
  679. $post['size'] = $data['size'] ?? 10;
  680. $post['number'] = ($data['number'] ?? 1) - 1;
  681. list($status,$result) = $this->post_helper($url,$post,$header);
  682. if(! $status) return [$status, $result];
  683. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  684. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  685. if(! isset($result['content'])) {
  686. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  687. return [false, $error];
  688. }
  689. return [true, $result];
  690. }
  691. public function screenPackageBySepAssem($data,$param){
  692. if(empty($data['screenDataList'])) return [false, '包装数据不能为空'];
  693. if(empty($data['site']) || empty($data['site_show'])) return [false, '站点信息不能为空'];
  694. list($date,$utc_date) = $this->getE8AndUTC();
  695. foreach ($data['screenDataList'] as $key => $value){
  696. if(empty($value['id']) || ! isset($value['type'])) return [false, '包装数据不能为空'];
  697. $data['screenDataList'][$key]['package_teams_group'] = $data['package_teams_group'];
  698. $data['screenDataList'][$key]['package_teams_group_show'] = $data['package_teams_group_show'];
  699. $data['screenDataList'][$key]['package_date'] = $utc_date;
  700. $data['screenDataList'][$key]['package_date_lt'] = $date;
  701. $data['screenDataList'][$key]['site'] = $data['site'];
  702. $data['screenDataList'][$key]['site_show'] = $data['site_show'];
  703. }
  704. $url = config("j_rfid.screen_package_by_sep_assem");
  705. $post = [
  706. 'screenDataList' => $data['screenDataList'],
  707. ];
  708. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  709. if(! $status) return [$status, $result];
  710. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  711. if(! isset($result['success'])) {
  712. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  713. return [false, $error];
  714. }
  715. return [true, ['box_no' => $result['data'] ?? [], 'package_date' => $date]];
  716. }
  717. public function sendAndReceiptList($data,$param){
  718. if(empty($data['site'])) return [false, '站点不能为空'];
  719. $header = array_merge($param['header'], ['site:'. $data['site']]);
  720. $url = config("j_rfid.sendAndReceiptList");
  721. if(! empty($data['contract_no']) || ! empty($data['no']) || ! empty($data['drawing_no'])) {
  722. $rules = [];
  723. if(! empty($data['contract_no'])) {
  724. $rules[] = [
  725. 'field' => 'contract_no',
  726. 'option' => 'IN',
  727. 'values' => $data['contract_no']
  728. ];
  729. }
  730. if(! empty($data['no'])) {
  731. $rules[] = [
  732. 'field' => 'no',
  733. 'option' => 'LIKE_ANYWHERE',
  734. 'values' => $data['no']
  735. ];
  736. }
  737. if(! empty($data['drawing_no'])) {
  738. $rules[] = [
  739. 'field' => 'drawing_no',
  740. 'option' => 'IN',
  741. 'values' => $data['drawing_no']
  742. ];
  743. }
  744. $post['rules'] = $rules;
  745. }
  746. $post['size'] = $data['size'] ?? 10;
  747. $post['number'] = ($data['number'] ?? 1) - 1;
  748. list($status,$result) = $this->post_helper($url,$post,$header);
  749. if(! $status) return [$status, $result];
  750. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  751. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  752. if(! isset($result['content'])) {
  753. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  754. return [false, $error];
  755. }
  756. return [true, $result];
  757. }
  758. public function sendOrderDtAssemList($data,$param){
  759. if(empty($data['site'])) return [false, '站点不能为空'];
  760. $header = array_merge($param['header'], ['site:'. $data['site']]);
  761. $url = config("j_rfid.sendOrderDtAssemList");
  762. if(! empty($data['send_id']) || ! empty($data['sep_dt_assem_id']) || ! empty($data['contract_no'])) {
  763. $rules = [];
  764. if(! empty($data['send_id'])) {
  765. $rules[] = [
  766. 'field' => 'furn_send_prod_dt.send_id',
  767. 'option' => 'IN',
  768. 'values' => $data['send_id']
  769. ];
  770. }
  771. if(! empty($data['sep_dt_assem_id'])) {
  772. $rules[] = [
  773. 'field' => 'sep_dt_assem_id',
  774. 'option' => 'IN',
  775. 'values' => $data['sep_dt_assem_id']
  776. ];
  777. }
  778. if(! empty($data['contract_no'])) {
  779. $rules[] = [
  780. 'field' => 'furn_send_prod_dt.contract_no',
  781. 'option' => 'NOT_IN',
  782. 'values' => $data['contract_no']
  783. ];
  784. }
  785. $post['rules'] = $rules;
  786. }
  787. $post['size'] = $data['size'] ?? 10;
  788. $post['number'] = ($data['number'] ?? 1) - 1;
  789. list($status,$result) = $this->post_helper($url,$post,$header);
  790. if(! $status) return [$status, $result];
  791. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  792. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  793. if(! isset($result['content'])) {
  794. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  795. return [false, $error];
  796. }
  797. return [true, $result];
  798. }
  799. public function packageList($data,$param){
  800. if(empty($data['site'])) return [false, '站点不能为空'];
  801. $header = array_merge($param['header'], ['site:'. $data['site']]);
  802. $url = config("j_rfid.packageList");
  803. if(! empty($data['drawing_no']) || ! empty($data['contract_no'])) {
  804. $rules = [];
  805. if(! empty($data['drawing_no'])) {
  806. $rules[] = [
  807. 'field' => 'drawing_no',
  808. 'option' => 'IN',
  809. 'values' => $data['drawing_no']
  810. ];
  811. }
  812. if(! empty($data['contract_no'])) {
  813. $rules[] = [
  814. 'field' => 'contract_no',
  815. 'option' => 'IN',
  816. 'values' => $data['contract_no']
  817. ];
  818. }
  819. $post['rules'] = $rules;
  820. }
  821. $post['size'] = $data['size'] ?? 10;
  822. $post['number'] = ($data['number'] ?? 1) - 1;
  823. list($status,$result) = $this->post_helper($url,$post,$header);
  824. if(! $status) return [$status, $result];
  825. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  826. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  827. if(! isset($result['content'])) {
  828. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  829. return [false, $error];
  830. }
  831. return [true, $result];
  832. }
  833. public function screenAutoCreateDispatch($data,$param){
  834. if(empty($data['type'])) return [false, '类型不能为空'];
  835. if(empty($data['id'])) return [false, 'ID不能为空'];
  836. if(empty($data['contract_no'])) return [false, '合同号不能为空'];
  837. if(empty($data['drawing_no'])) return [false, '图号不能为空'];
  838. if(empty($data['procedure'])) return [false, '工序不能为空'];
  839. foreach ($data['procedure'] as $value){
  840. if(empty($value)) return [false, '工序不能为空'];
  841. }
  842. $post = [
  843. 'type' => $data['type'],
  844. 'id' => $data['id'],
  845. 'contract_no' => $data['contract_no'],
  846. 'drawing_no' => $data['drawing_no'],
  847. 'procedure' => $data['procedure'],
  848. ];
  849. $url = config("j_rfid.screenAutoCreateDispatch");
  850. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  851. if(! $status) return [$status, $result];
  852. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  853. if(! isset($result['success'])) {
  854. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  855. return [false, $error];
  856. }
  857. return [true, ''];
  858. }
  859. public function screenGetSepData($data,$param){
  860. if(empty($data['id'])) return [false, '数据ID不能为空'];
  861. if(empty($data['type'])) return [false, 'TYPE不能为空'];
  862. $url = config("j_rfid.screenGetSepData");
  863. $post = [
  864. 'id' => $data['id'],
  865. 'type' => $data['type'],
  866. ];
  867. list($status,$result) = $this->post_helper($url,$post,$param['header']);
  868. if(! $status) return [$status, $result];
  869. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['message']];
  870. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  871. if(! isset($result['furn_sep_order_dt_assem_list'])) {
  872. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  873. return [false, $error];
  874. }
  875. return [true, $result];
  876. }
  877. public function furnSeparateOrderCompList($data,$param){
  878. if(empty($data['site'])) return [false, '站点不能为空'];
  879. $header = array_merge($param['header'], ['site:'. $data['site']]);
  880. $url = config("j_rfid.furnSeparateOrderCompList");
  881. if(! empty($data['drawing_no']) || ! empty($data['contract_no']) || ! empty($data['region']) || ! empty($data['room_no']) || ! empty($data['assembly_name']) || ! empty($data['component'])) {
  882. $rules = [];
  883. if(! empty($data['drawing_no'])) {
  884. $rules[] = [
  885. 'field' => 'exe_sep_order_a.drawing_no',
  886. 'option' => 'IN',
  887. 'values' => $data['drawing_no']
  888. ];
  889. }
  890. if(! empty($data['contract_no'])) {
  891. $rules[] = [
  892. 'field' => 'exe_sep_order_a.contract_no',
  893. 'option' => 'IN',
  894. 'values' => $data['contract_no']
  895. ];
  896. }
  897. if(! empty($data['region'])) {
  898. $rules[] = [
  899. 'field' => 'exe_sep_order_a.region',
  900. 'option' => 'IN',
  901. 'values' => $data['region']
  902. ];
  903. }
  904. if(! empty($data['room_no'])) {
  905. $rules[] = [
  906. 'field' => 'exe_sep_order_dtl_b.room',
  907. 'option' => 'IN',
  908. 'values' => $data['room_no']
  909. ];
  910. }
  911. if(! empty($data['assembly_name'])) {
  912. $rules[] = [
  913. 'field' => 'exe_sep_order_dtl_b.assembly_name',
  914. 'option' => 'IN',
  915. 'values' => $data['assembly_name']
  916. ];
  917. }
  918. if(! empty($data['component'])) {
  919. $rules[] = [
  920. 'field' => 'component',
  921. 'option' => 'IN',
  922. 'values' => $data['component']
  923. ];
  924. }
  925. $post['rules'] = $rules;
  926. }
  927. $post['size'] = $data['size'] ?? 10;
  928. $post['number'] = ($data['number'] ?? 1) - 1;
  929. list($status,$result) = $this->post_helper($url,$post,$header);
  930. if(! $status) return [$status, $result];
  931. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  932. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  933. if(! isset($result['content'])) {
  934. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  935. return [false, $error];
  936. }
  937. return [true, $result];
  938. }
  939. public function furnSeparateOrderDtCompList($data,$param){
  940. if(empty($data['site'])) return [false, '站点不能为空'];
  941. $header = array_merge($param['header'], ['site:'. $data['site']]);
  942. $url = config("j_rfid.furnSeparateOrderDtCompList");
  943. if(! empty($data['drawing_no']) || ! empty($data['contract_no']) || ! empty($data['region']) || ! empty($data['room_no']) || ! empty($data['assembly_name']) || ! empty($data['component'])) {
  944. $rules = [];
  945. if(! empty($data['drawing_no'])) {
  946. $rules[] = [
  947. 'field' => 'furn_sep_order_dt_prod.drawing_no',
  948. 'option' => 'IN',
  949. 'values' => $data['drawing_no']
  950. ];
  951. }
  952. if(! empty($data['contract_no'])) {
  953. $rules[] = [
  954. 'field' => 'furn_sep_order_dt_prod.contact_no',
  955. 'option' => 'IN',
  956. 'values' => $data['contract_no']
  957. ];
  958. }
  959. if(! empty($data['region'])) {
  960. $rules[] = [
  961. 'field' => 'furn_sep_order_dt_prod.region',
  962. 'option' => 'IN',
  963. 'values' => $data['region']
  964. ];
  965. }
  966. if(! empty($data['room_no'])) {
  967. $rules[] = [
  968. 'field' => 'furn_sep_order_dt_assem.room_no',
  969. 'option' => 'IN',
  970. 'values' => $data['room_no']
  971. ];
  972. }
  973. if(! empty($data['assembly_name'])) {
  974. $rules[] = [
  975. 'field' => 'furn_sep_order_dt_assem.assembly_name',
  976. 'option' => 'IN',
  977. 'values' => $data['assembly_name']
  978. ];
  979. }
  980. if(! empty($data['component'])) {
  981. $rules[] = [
  982. 'field' => 'component',
  983. 'option' => 'IN',
  984. 'values' => $data['component']
  985. ];
  986. }
  987. $post['rules'] = $rules;
  988. }
  989. $post['size'] = $data['size'] ?? 10;
  990. $post['number'] = ($data['number'] ?? 1) - 1;
  991. list($status,$result) = $this->post_helper($url,$post,$header);
  992. if(! $status) return [$status, $result];
  993. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  994. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  995. if(! isset($result['content'])) {
  996. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  997. return [false, $error];
  998. }
  999. return [true, $result];
  1000. }
  1001. public function getWorkshopData($data,$param){
  1002. if(empty($data['site'])) return [false, '站点不能为空'];
  1003. if(empty($data['type'])) return [false, 'TYPE不能为空'];
  1004. $header = array_merge($param['header'], ['site:'. $data['site']]);
  1005. $url = config("j_rfid.getWorkshopData");
  1006. if(! empty($data['drawing_no'])) $post['drawing_no'] = $data['drawing_no'];
  1007. if(! empty($data['contract_no'])) $post['contract_no'] = $data['contract_no'];
  1008. if(! empty($data['region'])) $post['region'] = $data['region'];
  1009. if(! empty($data['room_no'])) $post['room_no'] = $data['room_no'];
  1010. if(! empty($data['assembly_name'])) $post['assembly_name'] = $data['assembly_name'];
  1011. if(! empty($data['component'])) $post['component'] = $data['component'];
  1012. $post['type'] = $data['type'];
  1013. $post['site'] = $data['site'];
  1014. $post['size'] = $data['size'] ?? 10;
  1015. $post['number'] = $data['number'] ?? 1;
  1016. list($status,$result) = $this->post_helper($url,$post,$header);
  1017. if(! $status) return [$status, $result];
  1018. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['message']];
  1019. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  1020. if(! isset($result['success'])) {
  1021. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  1022. return [false, $error];
  1023. }
  1024. return [true, $result['data']];
  1025. }
  1026. public function screenGetSendData($data,$param){
  1027. if(empty($data['site'])) return [false, '站点不能为空'];
  1028. if(empty($data['type'])) return [false, 'TYPE不能为空'];
  1029. $header = array_merge($param['header'], ['site:'. $data['site']]);
  1030. $url = config("j_rfid.screenGetSendData");
  1031. if(! empty($data['drawing_no'])) $post['drawing_no'] = $data['drawing_no'];
  1032. if(! empty($data['contract_no'])) $post['contract_no'] = $data['contract_no'];
  1033. if(! empty($data['region'])) $post['region'] = $data['region'];
  1034. if(! empty($data['room_no'])) $post['room_no'] = $data['room_no'];
  1035. if(! empty($data['assembly_name'])) $post['assembly_name'] = $data['assembly_name'];
  1036. if(! empty($data['component'])) $post['component'] = $data['component'];
  1037. if(! empty($data['send_no'])) $post['send_no'] = $data['send_no'];
  1038. $post['type'] = $data['type'];
  1039. $post['site'] = $data['site'];
  1040. $post['size'] = $data['size'] ?? 10;
  1041. $post['number'] = $data['number'] ?? 1;
  1042. list($status,$result) = $this->post_helper($url,$post,$header);
  1043. if(! $status) return [$status, $result];
  1044. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['message']];
  1045. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  1046. if(! isset($result['success'])) {
  1047. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  1048. return [false, $error];
  1049. }
  1050. return [true, $result['data']];
  1051. }
  1052. public function furnSendOrderDtCompList($data,$param){
  1053. if(empty($data['site'])) return [false, '站点不能为空'];
  1054. $header = array_merge($param['header'], ['site:'. $data['site']]);
  1055. $url = config("j_rfid.furnSendOrderDtCompList");
  1056. if(! empty($data['drawing_no']) || ! empty($data['contract_no']) || ! empty($data['region']) || ! empty($data['room_no']) || ! empty($data['assembly_name']) || ! empty($data['component'])) {
  1057. $rules = [];
  1058. if(! empty($data['drawing_no'])) {
  1059. $rules[] = [
  1060. 'field' => 'furn_send_assem_dt.drawing_no',
  1061. 'option' => 'IN',
  1062. 'values' => $data['drawing_no']
  1063. ];
  1064. }
  1065. if(! empty($data['contract_no'])) {
  1066. $rules[] = [
  1067. 'field' => 'furn_send_prod_dt.contact_no',
  1068. 'option' => 'IN',
  1069. 'values' => $data['contract_no']
  1070. ];
  1071. }
  1072. if(! empty($data['region'])) {
  1073. $rules[] = [
  1074. 'field' => 'furn_send_assem_dt.region',
  1075. 'option' => 'IN',
  1076. 'values' => $data['region']
  1077. ];
  1078. }
  1079. if(! empty($data['room_no'])) {
  1080. $rules[] = [
  1081. 'field' => 'furn_send_assem_dt.room_no',
  1082. 'option' => 'IN',
  1083. 'values' => $data['room_no']
  1084. ];
  1085. }
  1086. if(! empty($data['assembly_name'])) {
  1087. $rules[] = [
  1088. 'field' => 'furn_send_assem_dt.assembly_name',
  1089. 'option' => 'IN',
  1090. 'values' => $data['assembly_name']
  1091. ];
  1092. }
  1093. if(! empty($data['component'])) {
  1094. $rules[] = [
  1095. 'field' => 'component',
  1096. 'option' => 'IN',
  1097. 'values' => $data['component']
  1098. ];
  1099. }
  1100. $post['rules'] = $rules;
  1101. }
  1102. $post['size'] = $data['size'] ?? 10;
  1103. $post['number'] = ($data['number'] ?? 1) - 1;
  1104. list($status,$result) = $this->post_helper($url,$post,$header);
  1105. if(! $status) return [$status, $result];
  1106. if(! empty($result['status']) && $result['status'] == 'error') return [false, $result['msg']];
  1107. if(! empty($result['type']) && $result['type'] == 'errorVm') return [false, $result['message']];
  1108. if(! isset($result['content'])) {
  1109. $error = $result[0]['message'] ?? "操作失败,请刷新页面";
  1110. return [false, $error];
  1111. }
  1112. return [true, $result];
  1113. }
  1114. public function post_helper($url, $data, $header = [], $timeout = 20){
  1115. Log::channel('apiLog')->info('工装云POST', ["api" => $url , "param" => $data ,"header" => $header]);
  1116. $ch = curl_init();
  1117. curl_setopt($ch, CURLOPT_URL, $url);
  1118. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  1119. curl_setopt($ch, CURLOPT_ENCODING, '');
  1120. curl_setopt($ch, CURLOPT_POST, 1);
  1121. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
  1122. curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  1123. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  1124. curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
  1125. if(!is_null($data)) curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
  1126. $r = curl_exec($ch);
  1127. if ($r === false) {
  1128. // 获取错误号
  1129. $errorNumber = curl_errno($ch);
  1130. // 获取错误信息
  1131. $errorMessage = curl_error($ch);
  1132. $message = "cURL Error #{$errorNumber}: {$errorMessage}";
  1133. Log::channel('apiLog')->info('工装云POST结果', ["message" => $message]);
  1134. return [false, $message];
  1135. }
  1136. curl_close($ch);
  1137. $return = json_decode($r, true);
  1138. Log::channel('apiLog')->info('工装云POST结果', ["message" => $return]);
  1139. if(! empty($return['message']) && $return['message'] == 'error.unAuthorized') return [0, '登录凭证已失效或者不正确'];
  1140. return [true, $return];
  1141. }
  1142. public function get_helper($url,$header=[],$timeout = 20){
  1143. $ch = curl_init();
  1144. curl_setopt_array($ch, array(
  1145. CURLOPT_URL => $url,
  1146. CURLOPT_RETURNTRANSFER => true,
  1147. CURLOPT_ENCODING => '',
  1148. CURLOPT_MAXREDIRS => 10,
  1149. CURLOPT_TIMEOUT => $timeout,
  1150. CURLOPT_FOLLOWLOCATION => true,
  1151. CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  1152. CURLOPT_CUSTOMREQUEST => 'GET',
  1153. CURLOPT_SSL_VERIFYPEER => false,
  1154. CURLOPT_HTTPHEADER => $header,
  1155. ));
  1156. $r = curl_exec($ch);
  1157. if ($r === false) {
  1158. // 获取错误号
  1159. $errorNumber = curl_errno($ch);
  1160. // 获取错误信息
  1161. $errorMessage = curl_error($ch);
  1162. $message = "cURL Error #{$errorNumber}: {$errorMessage}";
  1163. Log::channel('apiLog')->info('工装云GET', ["message" => $message]);
  1164. return [false, $message];
  1165. }
  1166. curl_close($ch);
  1167. $return = json_decode($r, true);
  1168. Log::channel('apiLog')->info('工装云GET', ["message" => $return]);
  1169. if(! empty($return['message']) && $return['message'] == 'error.unAuthorized') return [0, '登录凭证已失效或者不正常'];
  1170. return [true, $return];
  1171. }
  1172. }