IHEquipmentlistManager.swift 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915
  1. //
  2. // IHEquipmentlistManager.swift
  3. // Inhealth
  4. //
  5. // Created by weclouds on 2019/12/18.
  6. // Copyright © 2019 weclouds. All rights reserved.
  7. //
  8. import UIKit
  9. import PKHUD
  10. class IHEquipmentlistManager: NSObject ,IHViewManagerProtocolDelegate{
  11. var hotelId : String?
  12. var devType: String? = "0"
  13. var devDataList:[DevData]?
  14. var gatewayList :[GatewayData]?
  15. var currentIndex:Int? = 0
  16. var schoolPage = 1
  17. var isSchool : String = "0"
  18. private var manager_currentFloorId : String?
  19. private var manager_currentRoomId : String?
  20. // let searchVc = IHEquipmentSeachVCtr()
  21. lazy var mainView: IHEquipmentlistView = {
  22. let mainView = IHEquipmentlistView()
  23. mainView.delegate = self
  24. return mainView
  25. }()
  26. //http://www.iotena-web.com/upload/image/hotel_avatar.jpg
  27. // private var vc = UIViewController()
  28. private weak var vc : UIViewController?
  29. func bindController(_ vc: UIViewController) {
  30. self.vc = vc
  31. if Intermediate.hotelId == ""{
  32. createUI()
  33. }else{
  34. schoolOrHotel(hotelId: Intermediate.hotelId )
  35. }
  36. }
  37. //先知道是否学校
  38. func schoolOrHotel(hotelId:String) {
  39. IHEquipmentService.share.getSchoolOrHotelInfo(hotelId: hotelId, requestSuccess: { (isSchool) in
  40. self.isSchool = isSchool
  41. self.schoolPage = 1
  42. self.createUI()
  43. }) {
  44. log.debug("-学校失败--")
  45. }
  46. }
  47. override init() {
  48. super.init()
  49. NotificationCenter.default.addObserver(self, selector: #selector(reloadAddressNotify), name: NSNotification.Name(kNotificationIHAddressControllerReloadAddress), object: nil)
  50. NotificationCenter.default.addObserver(self, selector: #selector(reloadAddressNotify), name: NSNotification.Name(kNotificationIHAddressControllerReloadAddress), object: nil)
  51. NotificationCenter.default.addObserver(self, selector: #selector(refreshData), name: NSNotification.Name(kNotificationIHNewEquipmentManagerEditEquipmentReload), object: nil)
  52. NotificationCenter.default.addObserver(self, selector: #selector(refreshData), name: NSNotification.Name(kNotifactionIHEquipmentSeachManagerAfterDeleteEquipment), object: nil)
  53. //刷新学校列表
  54. NotificationCenter.default.addObserver(self, selector: #selector(refreshSchoolData), name: NSNotification.Name(kNotificationReloadEquipmentInfo), object: nil)
  55. }
  56. @objc func refreshSchoolData(noti : Notification){
  57. self.equipmentDidSelectedItemAt(self.currentIndex!,floorId : manager_currentFloorId,roomId:manager_currentRoomId)
  58. }
  59. @objc func reloadAddressNotify() {
  60. var title = Intermediate.hotelName
  61. if Intermediate.buildName != "所有" {
  62. title = "\(Intermediate.hotelName) · \(Intermediate.buildName)"
  63. }
  64. self.vc?.navigationBarTitle = title
  65. getSchoolOrHotel(hotelId: Intermediate.hotelId)
  66. }
  67. //再次获取是否学校
  68. func getSchoolOrHotel(hotelId:String) {
  69. IHEquipmentService.share.getSchoolOrHotelInfo(hotelId: hotelId, requestSuccess: { (isSchool) in
  70. self.isSchool = isSchool
  71. if self.isSchool == "1" {
  72. let type = "\(self.currentIndex!)"
  73. if type == "0"{
  74. //全部
  75. self.devType = "4"
  76. }
  77. if type == "1"{
  78. //教室灯
  79. self.devType = "0"
  80. }
  81. if type == "2"{
  82. //黑板灯
  83. self.devType = "1"
  84. }
  85. if type == "3"{
  86. //面板
  87. self.devType = "3"
  88. }
  89. if type == "4"{
  90. //窗帘
  91. self.devType = "2"
  92. }
  93. if type == "5"{
  94. //窗帘
  95. self.devType = "5"
  96. }
  97. self.mainView.isSchool = true
  98. self.mainView.currentFloorId = nil
  99. self.mainView.currentRoomId = nil
  100. self.manager_currentFloorId = nil
  101. self.manager_currentRoomId = nil
  102. self.mainView.floorBtn?.setTitle("所有", for: .normal)
  103. self.mainView.roomBtn?.setTitle("所有", for: .normal)
  104. self.mainView.classRoomList = nil
  105. self.schoolPage = 1
  106. let group = DispatchGroup()
  107. let queue1 = DispatchQueue(label: "getAllFloors")
  108. queue1.async {
  109. //获取楼层
  110. self.getAllFloors()
  111. }
  112. let queue2 = DispatchQueue(label: "getAllData")
  113. queue2.async {
  114. //获取所有的数据
  115. self.getSchoolDevList(hotelId: Intermediate.hotelId, builId: Intermediate.buildId,floorId: nil,roomId:nil, type: self.devType!)
  116. }
  117. group.notify(queue: DispatchQueue.main) {
  118. DispatchQueue.main.async {
  119. g_showSuccess()
  120. }
  121. }
  122. }else{
  123. // 酒店
  124. self.mainView.isSchool = false
  125. self.requiest(Intermediate.hotelId,devType: "0", completion: nil)
  126. self.hotelId = Intermediate.hotelId
  127. // self.requiest(self.hotelId, devType: devType!, completion: nil)
  128. self.requiest(self.hotelId, devType: "\(self.currentIndex!)", completion: nil)
  129. }
  130. }) {
  131. HUD.show(.label("网络出错"))
  132. log.debug("-学校失败--")
  133. }
  134. }
  135. deinit {
  136. NotificationCenter.default.removeObserver(self)
  137. }
  138. func createUI() {
  139. mainView.frame = CGRect(x: 0, y: 0, width: KSCREENWIDTH, height: KSCREENHEIGHT - KNavBarHeight - KTabbarHeight)
  140. self.vc?.view.addSubview(mainView)
  141. setNavigationBar()
  142. if self.isSchool == "1" {
  143. //判断学校
  144. mainView.isSchool = true
  145. //获取所有的楼层
  146. getAllFloors()
  147. }else{
  148. mainView.isSchool = false
  149. }
  150. HUD.show(.progress)
  151. if Intermediate.hotelId == "" {
  152. IHAddressService.share.getFirstHotel { (hotelId, hotelName) in
  153. self.vc?.navigationBarTitle = hotelName
  154. self.hotelId = hotelId
  155. self.requiest(hotelId, devType: "0" , completion: nil )
  156. }
  157. }else{
  158. self.vc?.navigationBarTitle = Intermediate.hotelName
  159. self.hotelId = Intermediate.hotelId
  160. if(self.isSchool == "0"){
  161. //酒店
  162. self.requiest(hotelId, devType: "0" , completion: nil)
  163. }else{
  164. //学校
  165. // 设备类型(4 教室灯,5 黑板灯,6 窗帘,7 面板)
  166. self.getSchoolDevList(hotelId: Intermediate.hotelId, builId: Intermediate.buildId,floorId: nil,roomId: nil,type:"4")
  167. }
  168. }
  169. }
  170. //获取学校的相应设备
  171. func getSchoolDevList(hotelId : String?,builId : String?,floorId : String?,roomId:String?,type : String) {
  172. if type != "5" {
  173. IHEquipmentService.share.getSchoolDevList(hotelId: hotelId, buildId: builId, floorId:floorId,roomId: roomId, page: self.schoolPage, type: type, keywords: nil, requestSuccess: { (devList) in
  174. log.debug("---获取整个学校---\(devList)")
  175. HUD.hide()
  176. self.mainView.endReflesh()
  177. if self.schoolPage == 1{
  178. self.mainView.devDataList = devList
  179. }else{
  180. self.mainView.devDataList = self.mainView.devDataList! + devList
  181. }
  182. //传给搜索的vc
  183. self.devDataList = self.mainView.devDataList
  184. }) {
  185. }
  186. }
  187. if type == "5"{
  188. //获取网关
  189. self.getGateWayInfo(buildId: Intermediate.buildId,page:"\(self.schoolPage)", keywords: nil)
  190. }
  191. }
  192. //获取网关相关的信息
  193. func getGateWayInfo(buildId: String,page : String,keywords:String?){
  194. IHGatewayService.share.getGatewayList(buildId: Intermediate.buildId,page : page, keywords: keywords, requestSuccess: { (list) in
  195. //[GatewayData]
  196. self.gatewayList = list
  197. //self.mainView.totalGateWayList = list
  198. //self.mainView.gatewayList = list
  199. HUD.hide()
  200. //停止更新
  201. self.mainView.endReflesh()
  202. if self.schoolPage == 1{
  203. self.mainView.gatewayList = list
  204. }else{
  205. self.mainView.gatewayList = self.mainView.gatewayList! + list
  206. }
  207. // //第一次或所有的按键都是all
  208. // if self.mainView.floorValue == "所有" && self.mainView.classRoomValue == "所有"{
  209. // self.mainView.totalGateWayList = list
  210. // self.mainView.gatewayList = list
  211. //
  212. // }
  213. // //选择了楼层与教室之后的每个按键
  214. // if self.mainView.isFilter == true{
  215. // var gateways = [GatewayData]()
  216. // for value in list {
  217. // if value.floor! == self.mainView.floorValue && value.roomNumber! == self.mainView.classRoomValue && self.mainView.classRoomValue != "所有"{
  218. // gateways.append(value)
  219. // }
  220. //
  221. // if value.floor! == self.mainView.floorValue && self.mainView.classRoomValue == "所有"{
  222. // gateways.append(value)
  223. // }
  224. // }
  225. // self.mainView.gatewayList = gateways
  226. // }
  227. //
  228. //
  229. // HUD.hide()
  230. }) {
  231. HUD.hide()
  232. }
  233. }
  234. func requiest(_ hotelId:String?,devType:String,completion:(([DevData])->Void)?) {
  235. let queue = DispatchQueue(label: "com.custom.thread.requiest", qos: DispatchQoS.default, attributes: DispatchQueue.Attributes.concurrent)
  236. //队列
  237. let group = DispatchGroup()
  238. var deviceList:[DevData]? = nil
  239. var gatewayList :[GatewayData]? = nil
  240. queue.async(group: group, qos: .default, flags: []) {
  241. group.enter()
  242. if devType != "5"{//节省网络资源 需要同时请求的时候才处理
  243. //devType: 设备类型(0 全部,1 lights,2 circadian lights,3 sensor,4 air purifiers)
  244. IHRoomListService.share.getDeviceList(hotelId, buildId: Intermediate.buildId
  245. , floorId: nil, roomId: nil, devType:devType,keywords : nil , requestSuccess: { (list) in
  246. group.leave()
  247. deviceList = list
  248. // HUD.hide()
  249. }) {
  250. deviceList = nil
  251. group.leave()
  252. }
  253. }else{
  254. deviceList = nil
  255. group.leave()
  256. }
  257. }
  258. // 请求网关列表
  259. queue.async(group: group, qos: .default, flags: []) {
  260. group.enter()
  261. if devType == "0" || devType == "5"{
  262. if Intermediate.buildId != "" {
  263. IHGatewayService.share.getGatewayList(buildId: Intermediate.buildId,page: "\(self.schoolPage)", keywords: nil, requestSuccess: { (list) in
  264. gatewayList = list
  265. group.leave()
  266. }) {
  267. gatewayList = nil
  268. group.leave()
  269. }
  270. }else{
  271. gatewayList = nil
  272. group.leave()
  273. }
  274. }else{
  275. gatewayList = nil
  276. group.leave()
  277. }
  278. //回到主线程
  279. group.notify(queue: DispatchQueue.main) {
  280. HUD.hide()
  281. self.mainView.endReflesh()
  282. if let list = deviceList{
  283. self.mainView.devDataList = list
  284. self.devDataList = list
  285. if let block = completion {
  286. block(list)
  287. }
  288. }
  289. self.gatewayList = gatewayList
  290. if self.schoolPage == 1{
  291. self.mainView.gatewayList = self.gatewayList
  292. }else{
  293. self.mainView.gatewayList = self.mainView.gatewayList! + self.gatewayList!
  294. }
  295. let dict = ["devDataList":deviceList as Any,"gatewayList":gatewayList as Any] as [String : Any]
  296. NotificationCenter.default.post(name: NSNotification.Name(kNotifactionIHEquipmentSeachManagerReloadSeachListData), object: dict)
  297. }
  298. }
  299. }
  300. func setNavigationBar() {
  301. //导航栏的渲染方式
  302. let leftItem = UIBarButtonItem(image: UIImage(named: "定位")?.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(hotelSelected))
  303. self.vc?.navigationItem.leftBarButtonItem = leftItem
  304. let addItem = UIBarButtonItem(image: UIImage(named: "新增")?.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(mapAction1))
  305. let refreshItem = UIBarButtonItem(image: UIImage(named: "刷新")?.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(refreshData))
  306. let serachItem = UIBarButtonItem(image: UIImage(named: "搜索")?.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(searchAction))
  307. self.vc?.navigationItem.rightBarButtonItems = [refreshItem,addItem,serachItem]
  308. }
  309. @objc func hotelSelected() {
  310. let picker = IHHotelPickerVCtr.shareInstance
  311. self.vc?.navigationController?.pushViewController(picker, animated: true)
  312. }
  313. @objc func mapAction1(){
  314. log.debug("点击了")
  315. let newEquipment = IHNewEquipmentVCtr()
  316. newEquipment.navigationBarTitle = "新增设备"
  317. //区分是否是学校
  318. newEquipment.isSchool = self.isSchool
  319. if let gatewayList = self.gatewayList{
  320. newEquipment.gatewayList = gatewayList
  321. }
  322. newEquipment.roomStyle = .equipmentList
  323. self.vc?.navigationController?.pushViewController(newEquipment, animated: true)
  324. }
  325. @objc func searchAction() {
  326. let searchVc = IHEquipmentSeachVCtr()
  327. searchVc.isSchool = self.isSchool
  328. // searchVc.devDataList = self.devDataList
  329. // searchVc.gatewayList = self.gatewayList
  330. // searchVc.lastVC = (self.vc as! IHEquipmentVCtr)
  331. // searchVc.currentIndex = currentIndex
  332. self.vc?.navigationController?.pushViewController(searchVc, animated: false)
  333. }
  334. @objc func refreshData() {
  335. HUD.show(.progress)
  336. if self.isSchool == "1"{
  337. //type:设备类型(0 教室灯,1 黑板灯,2 窗帘,3 面板,4 全部类型)
  338. self.getSchoolDevList(hotelId: Intermediate.hotelId, builId: Intermediate.buildId,floorId: manager_currentFloorId,roomId: manager_currentRoomId,type:self.devType!)
  339. }else{
  340. self.requiest(self.hotelId, devType: devType ?? "0", completion: nil)
  341. }
  342. }
  343. }
  344. extension IHEquipmentlistManager:IHAddressControllerDelegate,IHEquipmentlistViewDelegate{
  345. //选择每个 标题
  346. func equipmentlistViewdidSelectedItemAt(_ index: Int, floorId: String?, roomId: String?) {
  347. HUD.show(.progress)
  348. self.devType = "\(index)"
  349. self.schoolPage = 1
  350. if self.isSchool == "1" {
  351. //学校
  352. // 设备类型(0 教室灯,1 黑板灯,2 窗帘,3 面板,4 全部类型)
  353. // ui: 全部,教室灯,黑板灯,面板,窗帘,网关
  354. //4: index=0, 0: index=1,1: index=2, 2: index=3
  355. let type = "\(index)"
  356. if type == "0"{
  357. //全部
  358. self.devType = "4"
  359. }
  360. if type == "1"{
  361. //教室灯
  362. self.devType = "0"
  363. }
  364. if type == "2"{
  365. //黑板灯
  366. self.devType = "1"
  367. }
  368. if type == "3"{
  369. //面板
  370. self.devType = "3"
  371. }
  372. if type == "4"{
  373. //窗帘
  374. self.devType = "2"
  375. }
  376. if type == "5"{
  377. //网关
  378. self.devType = "5"
  379. }
  380. self.manager_currentFloorId = floorId
  381. self.manager_currentRoomId = roomId
  382. self.getSchoolDevList(hotelId: Intermediate.hotelId, builId: Intermediate.buildId,floorId: floorId,roomId: roomId,type:self.devType!)
  383. }else{
  384. //酒店
  385. self.requiest(self.hotelId, devType: devType!, completion: nil)
  386. }
  387. self.currentIndex = index
  388. }
  389. //下拉刷新
  390. func tableviewHeaderEsReloadData(floorId: String?, roomId: String?) {
  391. if self.isSchool == "1" {
  392. self.schoolPage = 1
  393. self.manager_currentFloorId = floorId
  394. self.manager_currentRoomId = roomId
  395. self.tableviewRefresh(floorId: floorId, roomId: roomId)
  396. }else{
  397. //warning
  398. self.mainView.endReflesh()
  399. }
  400. }
  401. //上拉刷新
  402. func tableviewBottonEsgetMoreData(floorId: String?, roomId: String?) {
  403. if isSchool == "1"{
  404. self.schoolPage += 1
  405. self.manager_currentFloorId = floorId
  406. self.manager_currentRoomId = roomId
  407. tableviewRefresh(floorId: floorId, roomId: roomId)
  408. }else{
  409. //warning
  410. self.mainView.endReflesh()
  411. }
  412. }
  413. //选择楼层的房间
  414. func selectFloorRoom(_ index: Int,floorId: String?, roomId: String?) {
  415. self.schoolPage = 1
  416. self.currentIndex = index
  417. self.manager_currentFloorId = floorId
  418. self.manager_currentRoomId = roomId
  419. //队列
  420. let group = DispatchGroup()
  421. var queue1 : DispatchQueue?
  422. if roomId == nil{
  423. //选择房间
  424. queue1 = DispatchQueue(label: "getRooms")
  425. queue1?.async {
  426. IHEquipmentService.share.getFloorRoom(floorId: floorId!){(floorRoomInfo) in
  427. let result = floorRoomInfo.result
  428. self.mainView.floorRoomList = result?.roomList
  429. }
  430. }
  431. }
  432. let queue2 = DispatchQueue(label: "getAllRoomsData")
  433. queue2.async{
  434. let type = "\(index)"
  435. if type == "0"{
  436. //全部
  437. self.devType = "4"
  438. }
  439. if type == "1"{
  440. //教室灯
  441. self.devType = "0"
  442. }
  443. if type == "2"{
  444. //黑板灯
  445. self.devType = "1"
  446. }
  447. if type == "3"{
  448. //面板
  449. self.devType = "3"
  450. }
  451. if type == "4"{
  452. //窗帘
  453. self.devType = "2"
  454. }
  455. if type == "5"{
  456. //网关
  457. self.devType = "5"
  458. }
  459. self.getSchoolDevList(hotelId: Intermediate.hotelId, builId: Intermediate.buildId,floorId: floorId,roomId: roomId,type:self.devType!)
  460. }
  461. group.notify(queue: DispatchQueue.main) {
  462. g_showSuccess()
  463. }
  464. }
  465. //上下拉刷新
  466. private func tableviewRefresh(floorId : String?,roomId : String?){
  467. let type = "\(self.currentIndex!)"
  468. if type == "0"{
  469. //全部
  470. self.devType = "4"
  471. }
  472. if type == "1"{
  473. //教室灯
  474. self.devType = "0"
  475. }
  476. if type == "2"{
  477. //黑板灯
  478. self.devType = "1"
  479. }
  480. if type == "3"{
  481. //面板
  482. self.devType = "3"
  483. }
  484. if type == "4"{
  485. //窗帘
  486. self.devType = "2"
  487. }
  488. if type == "5"{
  489. //网关
  490. self.devType = "5"
  491. }
  492. self.mainView.isSchool = true
  493. self.manager_currentFloorId = floorId
  494. self.manager_currentRoomId = roomId
  495. self.getSchoolDevList(hotelId: Intermediate.hotelId, builId: Intermediate.buildId,floorId: floorId,roomId: roomId, type: self.devType!)
  496. }
  497. func equipmentListSelected(_ gateway: GatewayData?) {
  498. //点击网关
  499. let gatewayVC = IHGatewayDetailVCtr()
  500. gatewayVC.gateway = gateway
  501. self.vc?.navigationController?.pushViewController(gatewayVC, animated: true)
  502. }
  503. func equipmentListSelected(_ devData: DevData?) {
  504. if let data = devData {
  505. if isSchool == "1"{
  506. //学校
  507. // 4 教室灯,5 黑板灯,6 窗帘,7 面板
  508. if data.type == "4" || data.type == "5"{
  509. //灯
  510. let roomLight = IHLampControlVCtr()
  511. roomLight.dataSource = data
  512. roomLight.isClassRoom = true
  513. var light = ShoolDeviceList()
  514. light.id = data.id
  515. light.type = data.type
  516. light.status = data.status
  517. light.light = data.brightness
  518. light.color = data.color
  519. light.model = data.mode!
  520. light.gatewayId = data.gatewayId
  521. roomLight.shoolDevice = light
  522. self.vc?.navigationController?.pushViewController(roomLight, animated: true)
  523. }
  524. if data.type == "6"{
  525. HUD.flash(.label("还没开放--窗帘"), delay: 0.5)
  526. }
  527. if data.type == "7"{
  528. HUD.flash(.label("还没开放--面板"), delay: 0.5)
  529. }
  530. }else{
  531. //酒店
  532. if data.devType == "3" {
  533. let sensor = IHSensorVCtr()
  534. sensor.devId = data.id
  535. sensor.dataSource = data
  536. sensor.navigationBarTitle = (data.name?.isBlanck == false && data.name != nil) ? data.name : "Sensor"
  537. self.vc?.navigationController?.pushViewController(sensor, animated: true)
  538. }else if data.devType == "4"{
  539. let air = IHAirVCtr()
  540. air.navigationBarTitle = (data.name?.isBlanck == false && data.name != nil) ? data.name : "Air purifier"
  541. air.purifierId = data.id
  542. air.dataSource = data
  543. self.vc?.navigationController?.pushViewController(air, animated: true)
  544. }else{
  545. let roomLight = IHLampControlVCtr()
  546. if data.devType == "1" {
  547. roomLight.lampName = (data.name?.isBlanck == false && data.name != nil) ? data.name : "Light"
  548. }else if data.devType == "2"{
  549. roomLight.lampName = (data.name?.isBlanck == false && data.name != nil) ? data.name : "Circadian light"
  550. }
  551. roomLight.dataSource = data
  552. self.vc?.navigationController?.pushViewController(roomLight, animated: true)
  553. }
  554. }
  555. }
  556. }
  557. //删除网关
  558. func gatewayDelegate(_ gateway: GatewayData, segmentIndex: Int) {
  559. IHGatewayService.share.delegateGateway(gateway.id!, requestSuccess: {
  560. //删除失败
  561. if self.isSchool == "1"{
  562. //学校
  563. self.getGateWayInfo(buildId: Intermediate.buildId, page: "1", keywords: nil)
  564. }else{
  565. //酒店
  566. self.requiest(self.hotelId, devType: "\(segmentIndex)", completion: nil)
  567. }
  568. }) {
  569. }
  570. }
  571. func gatewayUpdate(_ gateway: GatewayData,segmentIndex: Int) {
  572. let updateVc = IHGatewayUPdateVCtr()
  573. updateVc.gateway = gateway
  574. self.vc?.navigationController?.pushViewController(updateVc, animated: true)
  575. log.debug("网关升级")
  576. }
  577. func gatewaySetting(_ gateway: GatewayData, segmentIndex setmentIndex: Int) {
  578. log.debug("网关设置")
  579. let eqment = IHNewEquipmentVCtr()
  580. eqment.roomStyle = .gatewayEdit
  581. eqment.gateway = gateway
  582. eqment.navigationBarTitle = gateway.network_name
  583. self.vc?.navigationController?.pushViewController(eqment, animated: true)
  584. }
  585. func equipmentSetting(_ devData: DevData, segmentIndex: Int) {
  586. if isSchool != "1" {
  587. //原来的
  588. let eqment = IHNewEquipmentVCtr()
  589. eqment.roomStyle = .equipmentEdit
  590. eqment.devData = devData
  591. eqment.navigationBarTitle = devData.name
  592. self.vc?.navigationController?.pushViewController(eqment, animated: true)
  593. }else{
  594. //4 教室灯,5 黑板灯,6 窗帘,7 面板
  595. if devData.type == "4" || devData.type == "5" {
  596. let classLightVC = IHClassLightSettingCtr()
  597. classLightVC.roomStyle = .equipmentEdit
  598. classLightVC.devData = devData
  599. classLightVC.navigationBarTitle = devData.name
  600. self.vc?.navigationController?.pushViewController(classLightVC, animated: true)
  601. }else if devData.type == "6" {
  602. let classCurtainVC = IHCurtainSettingCtr()
  603. classCurtainVC.roomStyle = .equipmentEdit
  604. classCurtainVC.devData = devData
  605. classCurtainVC.navigationBarTitle = devData.name
  606. self.vc?.navigationController?.pushViewController(classCurtainVC, animated: true)
  607. }else {
  608. let classPanelVC = IHPanelSettingCtr()
  609. classPanelVC.roomStyle = .equipmentEdit
  610. classPanelVC.devData = devData
  611. classPanelVC.navigationBarTitle = devData.name
  612. self.vc?.navigationController?.pushViewController(classPanelVC, animated: true)
  613. }
  614. }
  615. }
  616. func equipmentHistory(_ devData: DevData, segmentIndex: Int) {
  617. if isSchool == "0" {
  618. if devData.devType == "1" || devData.devType == "2" {
  619. getLampHistory(devData)
  620. }else if devData.devType == "3"{
  621. getSensorHistory(devData)
  622. }else if devData.devType == "4"{
  623. getPurifierHistory(devData)
  624. }
  625. }else{
  626. HUD.flash(.label("还未开放"), delay: 0.8)
  627. }
  628. }
  629. //删除设备
  630. func equipmentListDeleteDevice(_ devType: String, devId: String,segmentIndex: Int) {
  631. log.debug("删除设备")
  632. if isSchool != "1" {
  633. // devType: 设备类型(0 全部,1 lights,2 circadian lights,3 sensor,4 air purifiers)
  634. //灯,senor,air
  635. IHEquipmentService.share.deleteEquimemnt(devType, devId: devId) { (isSuccess) in
  636. if isSuccess == true {
  637. //删除失败
  638. self.requiest(self.hotelId, devType: "\(segmentIndex)", completion: nil)
  639. }else{
  640. }
  641. }
  642. }else{
  643. //学校
  644. IHEquipmentService.share.delSchoolDevice(lightId: devId) { (msg, code) in
  645. if let code = code{
  646. if(code == "0000"){
  647. HUD.flash(.label("删除成功"), onView: nil, delay: 0.2) { (_) in
  648. //warning
  649. //self.equipmentlistViewdidSelectedItemAt(self.currentIndex!)
  650. self.equipmentDidSelectedItemAt(self.currentIndex!, floorId: self.manager_currentFloorId, roomId: self.manager_currentRoomId)
  651. }
  652. }else{
  653. HUD.flash(.label(msg!), delay: 0.2)
  654. }
  655. }
  656. }
  657. }
  658. }
  659. func equipmentDidSelectedItemAt(_ index: Int,floorId : String?,roomId:String?) {
  660. //选择标题
  661. HUD.show(.progress)
  662. self.devType = "\(index)"
  663. self.schoolPage = 1
  664. if self.isSchool == "1" {
  665. //学校
  666. // 设备类型(0 教室灯,1 黑板灯,2 窗帘,3 面板,4 全部类型)
  667. // ui: 全部,教室灯,黑板灯,面板,窗帘,网关
  668. //4: index=0, 0: index=1,1: index=2, 2: index=3
  669. let type = "\(index)"
  670. if type == "0"{
  671. //全部
  672. self.devType = "4"
  673. }
  674. if type == "1"{
  675. //教室灯
  676. self.devType = "0"
  677. }
  678. if type == "2"{
  679. //黑板灯
  680. self.devType = "1"
  681. }
  682. if type == "3"{
  683. //面板
  684. self.devType = "3"
  685. }
  686. if type == "4"{
  687. //窗帘
  688. self.devType = "2"
  689. }
  690. if type == "5"{
  691. //网关
  692. self.devType = "5"
  693. }
  694. //warning
  695. self.getSchoolDevList(hotelId: Intermediate.hotelId, builId: Intermediate.buildId,floorId: floorId,roomId: roomId,type:self.devType!)
  696. }else{
  697. //酒店
  698. self.requiest(self.hotelId, devType: devType!, completion: nil)
  699. }
  700. self.currentIndex = index
  701. }
  702. func selectedAddress(address: String, addressID: String) {
  703. HUD.show(.progress)
  704. Intermediate.hotelId = addressID
  705. Intermediate.hotelName = address
  706. self.vc?.navigationBarTitle = address
  707. self.hotelId = addressID
  708. self.requiest(self.hotelId, devType: devType!, completion: nil)
  709. }
  710. }
  711. extension IHEquipmentlistManager{
  712. //获取所有的楼层
  713. private func getAllFloors(){
  714. //getAreaFloorNav
  715. DispatchQueue.main.async {
  716. HUD.flash(.progress, onView: nil, delay: 8) { (_) in
  717. HUD.flash(.label("请求超时"), delay: 0.8)
  718. }
  719. }
  720. IHEquipmentService.share.getAreaFloorNav(buildId: Intermediate.buildId) { (areaFloorInfo) in
  721. let result = areaFloorInfo.result
  722. self.mainView.areaFloorList = result?.floorList
  723. }
  724. }
  725. func getLampHistory(_ devData: DevData) {
  726. let devId = devData.id
  727. HUD.show(.progress)
  728. HUD.hide(afterDelay: 20) { (isSuccess) in
  729. if isSuccess == true{
  730. g_showHUD("请求超时")
  731. }
  732. }
  733. var energy_consumption : ReportData?
  734. var lighting_use_schedule :ReportData?
  735. let queue = DispatchQueue(label: "com.custom.thread", qos: DispatchQoS.default, attributes: DispatchQueue.Attributes.concurrent)
  736. let group = DispatchGroup()
  737. queue.async(group: group, qos: .default, flags: []) {
  738. group.enter()
  739. IHRoomLightService.share.getLampReport(devId!, dateType: "0", dataType: "0", date: nil, requestSuccess: { (data) in
  740. group.leave()
  741. energy_consumption = data
  742. }) {
  743. group.leave()
  744. energy_consumption = nil
  745. }
  746. }
  747. queue.async(group: group, qos: .default, flags: []) {
  748. group.enter()
  749. IHRoomLightService.share.getLampReport(devId!, dateType: "0", dataType: "1", date: nil, requestSuccess: { (data) in
  750. group.leave()
  751. lighting_use_schedule = data
  752. }) {
  753. group.leave()
  754. lighting_use_schedule = nil
  755. }
  756. }
  757. //回到主线程
  758. group.notify(queue: DispatchQueue.main) {
  759. HUD.hide()
  760. if energy_consumption != nil || lighting_use_schedule != nil{
  761. let history = IHRoomLightHistoryVCtr()
  762. history.devId = devData.id
  763. history.devType = devData.devType
  764. let lampHistory = (energy_consumption:energy_consumption,lighting_use_schedule:lighting_use_schedule) as! (energy_consumption: ReportData, lighting_use_schedule: ReportData)
  765. history.lampHistory = lampHistory
  766. self.vc?.navigationController?.pushViewController(history, animated: true)
  767. }else{
  768. g_showHUD("无数据")
  769. }
  770. }
  771. }
  772. func getSensorHistory( _ devData: DevData){
  773. log.debug("点击了")
  774. HUD.show(.progress)
  775. HUD.hide(afterDelay: 20) { (isSuccess) in
  776. if isSuccess == true{
  777. g_showHUD("请求超时")
  778. }
  779. }
  780. let historyvc = IHRoomLightHistoryVCtr()
  781. historyvc.devId = devData.id
  782. historyvc.devType = "3"
  783. IHSensorService.share.getSensorHistory(devData.id!, date_type: "0", requestSuccess: { (history) in
  784. HUD.hide()
  785. historyvc.sensorHistory = history
  786. self.vc?.navigationController?.pushViewController(historyvc, animated: true)
  787. }) {
  788. g_showHUD("感应器无历史数据")
  789. }
  790. }
  791. func getPurifierHistory(_ devData:DevData) {
  792. HUD.show(.progress)
  793. HUD.hide(afterDelay: 20) { (isSuccess) in
  794. if isSuccess == true{
  795. g_showHUD("请求超时")
  796. }
  797. }
  798. let historyvc = IHRoomLightHistoryVCtr()
  799. historyvc.devId = devData.id
  800. historyvc.devType = "4"
  801. IHAirService.share.getPurifierReport(devData.id!, dateType: "0", date: nil, requestSuccess: { (history) in
  802. HUD.hide()
  803. historyvc.purifierHistroy = history
  804. self.vc?.navigationController?.pushViewController(historyvc, animated: true)
  805. }) {
  806. g_showHUD("空气净化器无历史数据")
  807. }
  808. }
  809. }