OpcDataController.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364
  1. <?php
  2. namespace Modules\OpcData\Http\Controllers\Api;
  3. use Illuminate\Contracts\Support\Renderable;
  4. use Illuminate\Http\Request;
  5. use Illuminate\Http\Response;
  6. use Illuminate\Routing\Controller;
  7. use Illuminate\Support\Facades\DB;
  8. use Modules\OpcData\Entities\OpcDataDict;
  9. class OpcDataController extends Controller
  10. {
  11. protected $opcDB;
  12. // private $opcDictArr = array();
  13. protected $opcConnectName = 'mysql_opc_jinjiaqu';
  14. // private $dictTableName = 'tb_dev_dict_list';
  15. // private $dataTableName = 'equipment';
  16. public function __construct() {
  17. $this->opcDB = DB::connection($this->opcConnectName);
  18. }
  19. /**
  20. * Display a listing of the resource.
  21. * @return Renderable
  22. */
  23. public function index()
  24. {
  25. return view('opcdata::index');
  26. }
  27. /**
  28. * Show the form for creating a new resource.
  29. * @return Renderable
  30. */
  31. public function create()
  32. {
  33. return view('opcdata::create');
  34. }
  35. /**
  36. * Store a newly created resource in storage.
  37. * @param Request $request
  38. * @return Renderable
  39. */
  40. public function store(Request $request)
  41. {
  42. //
  43. }
  44. /**
  45. * Show the specified resource.
  46. * @param int $id
  47. * @return Renderable
  48. */
  49. public function show($id)
  50. {
  51. return view('opcdata::show');
  52. }
  53. /**
  54. * Show the form for editing the specified resource.
  55. * @param int $id
  56. * @return Renderable
  57. */
  58. public function edit($id)
  59. {
  60. return view('opcdata::edit');
  61. }
  62. /**
  63. * Update the specified resource in storage.
  64. * @param Request $request
  65. * @param int $id
  66. * @return Renderable
  67. */
  68. public function update(Request $request, $id)
  69. {
  70. //
  71. }
  72. /**
  73. * Remove the specified resource from storage.
  74. * @param int $id
  75. * @return Renderable
  76. */
  77. public function destroy($id)
  78. {
  79. //
  80. }
  81. public function getData(Request $request)
  82. {
  83. $getDataType = $request->system_type; // 获取需要的数据
  84. $dataArr = array(); // 返回数据数组
  85. $result;
  86. if ($getDataType == 'ventilation_zb'){
  87. // 中部风机
  88. $groupId = 1;
  89. $result = $this->getFanData($groupId);
  90. } else if ($getDataType == 'ventilation_bb') {
  91. // 北部风机
  92. $groupId = 2;
  93. $result = $this->getFanData($groupId);
  94. } else if ($getDataType == 'pump_zy') {
  95. // 中央水泵
  96. $groupId = 3;
  97. $result = $this->getPumpData($groupId);
  98. } else if ($getDataType == 'pump_690') {
  99. // 609水泵
  100. $groupId = 4;
  101. $result = $this->getPumpData($groupId);
  102. } else if ($getDataType == 'compressed_air') {
  103. // 压风
  104. $groupId = 5;
  105. $result = $this->getcompressedAirData($groupId);
  106. } else {
  107. return;
  108. }
  109. return response()->json($result);
  110. }
  111. // 水泵
  112. public function getFanData($groupId) {
  113. $sqlStr = "
  114. select t1.dev_type_id,
  115. t1.dev_type_name,
  116. t1.device_num,
  117. t1.device_name,
  118. case t.val
  119. when 'True' then 1
  120. when 'False' then 2
  121. else t.val
  122. end val,
  123. t1.json_key,
  124. t1.row_number,
  125. t1.unit
  126. from equipment t
  127. join tb_dev_dict_list t1 on t.selItem = t1.selItem
  128. where t1.group_id = ".$groupId."
  129. and t1.is_show = 1
  130. order by t1.dev_type_id, t1.row_number, t1.device_num
  131. ";
  132. $dbResult = $this->opcDB->select($sqlStr);
  133. // dd($dbResult);
  134. foreach ($dbResult as $key => $val) {
  135. $fanNum = $val->dev_type_id - 1; // 风机号
  136. $label = $val->device_name; // 设备名
  137. $devVal = $val->val; // 数值
  138. $jsonKey = $val->json_key; // json键值
  139. $unit = $val->unit; // 单位
  140. $dataArr[$fanNum]['title'] = $val->dev_type_name; // 风机名
  141. $valArr = [
  142. 'label' => $label, // 标题
  143. 'unit' => $unit // 单位
  144. ];
  145. // 状态与value
  146. if($jsonKey == 'state_list') {
  147. $valArr['state'] = $devVal;
  148. } else {
  149. $valArr['value'] = $devVal;
  150. }
  151. // 根据风量判断风机开关
  152. if($label == '风量') {
  153. if ($devVal <= 0 ) {
  154. $dataArr[$fanNum]['state'] = 2;
  155. } else {
  156. $dataArr[$fanNum]['state'] = 1;
  157. }
  158. }
  159. $dataArr[$fanNum][$jsonKey][] = $valArr;
  160. }
  161. return $dataArr;
  162. }
  163. public function getPumpData($groupId) {
  164. $sqlStr = "
  165. select t1.dev_type_id,
  166. t1.dev_type_name,
  167. t1.device_num,
  168. t1.device_name,
  169. case t.val
  170. when 'True' then 1
  171. when 'False' then 2
  172. else t.val
  173. end val,
  174. t1.json_key,
  175. t1.row_number,
  176. t1.unit
  177. from equipment t
  178. join tb_dev_dict_list t1 on t.selItem = t1.selItem
  179. where t1.group_id = ".$groupId."
  180. and t1.is_show = 1
  181. order by t1.dev_type_id, t1.row_number, t1.device_num
  182. ";
  183. $dbResult = $this->opcDB->select($sqlStr);
  184. $timeArr = array(); // 用于拼接时分秒
  185. $timeJsonKey; // 记录time字段key名
  186. // dd($dbResult);
  187. foreach ($dbResult as $key => $val) {
  188. $devName = $val->dev_type_name; // 泵名
  189. $rowNumber = $val->row_number; // 排序
  190. $jsonKey = $val->json_key; // json键值
  191. $label = $val->device_name; // 设备名
  192. $devNum = $val->dev_type_id - 1; // 设备号
  193. $unit = $val->unit; // 单位
  194. $devVal = $val->val; // 数值
  195. if ($rowNumber <= 4) {
  196. $valArr = [
  197. 'label' => $label, // 标题
  198. 'value' => $devVal, // 值
  199. 'unit' => $unit // 单位
  200. ];
  201. $dataArr[$jsonKey][] = $valArr;
  202. } else if ($rowNumber == 5) {
  203. if ($groupId == 4) {
  204. // 609水泵房单独处理状态
  205. $dataArr['water_pump'][$devNum]['name'] = $devName;
  206. if (array_key_exists($jsonKey, $dataArr['water_pump'][$devNum])) {
  207. $state = $dataArr['water_pump'][$devNum][$jsonKey];
  208. $dataArr['water_pump'][$devNum][$jsonKey] = max($devVal, $state);
  209. } else {
  210. $dataArr['water_pump'][$devNum][$jsonKey] = $devVal;
  211. }
  212. } else {
  213. // 中央水泵房电机开启状态处理
  214. $valArr = [
  215. 'label' => $devName, // 标题
  216. 'state' => $devVal // 值
  217. ];
  218. $dataArr[$jsonKey][] = $valArr;
  219. }
  220. } else if ($rowNumber == 10 or $rowNumber == 11) {
  221. $timeArr[$label][$devNum][$unit] = $devVal;
  222. $timeJsonKey = $jsonKey;
  223. } else if ($rowNumber > 5) {
  224. $valArr = [
  225. 'label' => $label, // 标题
  226. 'value' => $devVal, // 值
  227. 'unit' => $unit // 单位
  228. ];
  229. $dataArr['water_pump'][$devNum][$jsonKey][] = $valArr;
  230. }
  231. }
  232. foreach ($timeArr as $key => $value) {
  233. for ($i=0; $i < count($value); $i++) {
  234. $timeFormatStr = $value[$i]['HH'].'时'.$value[$i]['MM'].'分'.$value[$i]['SS'].'秒';
  235. $valArr = [
  236. 'label' => $key, // 标题
  237. 'value' => $timeFormatStr, // 值
  238. 'unit' => '' // 单位
  239. ];
  240. $dataArr['water_pump'][$i][$timeJsonKey][] = $valArr;
  241. }
  242. }
  243. return $dataArr;
  244. }
  245. public function getcompressedAirData($groupId) {
  246. $sqlStr = "
  247. select t1.dev_type_id,
  248. t1.dev_type_name,
  249. t1.device_num,
  250. t1.device_name,
  251. case t.val
  252. when 'True' then 1
  253. when 'False' then 2
  254. else t.val
  255. end val,
  256. t1.json_key,
  257. t1.row_number,
  258. t1.unit
  259. from equipment t
  260. join tb_dev_dict_list t1 on t.selItem = t1.selItem
  261. where t1.group_id = ".$groupId."
  262. and t1.is_show = 1
  263. order by t1.dev_type_id, t1.row_number, t1.device_num
  264. ";
  265. $dbResult = $this->opcDB->select($sqlStr);
  266. $timeArr = array(); // 用于拼接时分秒
  267. $timeJsonKey; // 记录time字段key名
  268. // dd($dbResult);
  269. foreach ($dbResult as $key => $val) {
  270. $devName = $val->dev_type_name; // 泵名
  271. $rowNumber = $val->row_number; // 排序
  272. $jsonKey = $val->json_key; // json键值
  273. $label = $val->device_name; // 设备名
  274. $devNum = $val->dev_type_id - 1; // 设备号
  275. $unit = $val->unit; // 单位
  276. $devVal = $val->val; // 数值
  277. // $valArr[$jsonKey] = $devVal;
  278. if ($jsonKey == 'run_parameter') {
  279. $dataArr['compressed_air'][$devNum]['name'] = $devName;
  280. $dataArr['compressed_air'][$devNum]['state'] = $devVal;
  281. $valArr = [
  282. 'label' => $label, // 标题
  283. 'state' => $devVal, // 值
  284. 'unit' => $unit // 单位
  285. ,'json' => $jsonKey
  286. ];
  287. $dataArr['compressed_air'][$devNum][$jsonKey][] = $valArr;
  288. } else if ($jsonKey == 'common') {
  289. $valArr = [
  290. 'label' => $label, // 标题
  291. 'value' => $devVal, // 值
  292. 'unit' => $unit // 单位
  293. ];
  294. $dataArr[$jsonKey][] = $valArr;
  295. } else if ($jsonKey == 'drain_value_state') {
  296. // 开关状态单独处理
  297. $dataArr['compressed_air'][$devNum][$jsonKey] = $devVal;
  298. if (array_key_exists($jsonKey, $dataArr['compressed_air'][$devNum])) {
  299. $state = $dataArr['compressed_air'][$devNum][$jsonKey];
  300. $dataArr['compressed_air'][$devNum][$jsonKey] = max($devVal, $state);
  301. } else {
  302. $dataArr['compressed_air'][$devNum][$jsonKey] = $devVal;
  303. }
  304. } else if ($jsonKey == 'compressed_air') {
  305. $valArr = [
  306. 'label' => $label, // 标题
  307. 'value' => $devVal, // 值
  308. 'unit' => $unit // 单位
  309. ];
  310. $dataArr['compressed_air'][$devNum][$jsonKey][] = $valArr;
  311. } else if ($jsonKey == 'warn_state') {
  312. $valArr = [
  313. 'label' => $label, // 标题
  314. 'state' => $devVal, // 值
  315. 'unit' => $unit // 单位
  316. ];
  317. $dataArr['compressed_air'][$devNum][$jsonKey][] = $valArr;
  318. }
  319. }
  320. return $dataArr;
  321. }
  322. }