123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384 |
- //
- // IHRoomLightHistoryVCtr.swift
- // Inhealth
- //
- // Created by weclouds on 2019/12/16.
- // Copyright © 2019 weclouds. All rights reserved.
- //
- import UIKit
- import JXSegmentedView
- import PKHUD
- let kNotifactionIHRoomLightHistoryVCtrReloadSegmentViewData = "kNotifactionIHRoomLightHistoryVCtrReloadSegmentViewData"
- class IHRoomLightHistoryVCtr: UIViewController {
- var date_type:Int?
- //空气净化器历史数据
- var purifierHistroy:PurifierReportData?{
- didSet{
- if let purifierHistory = self.purifierHistroy {
- self.purifierHistoryArr?.removeAll()
- self.purifierHistoryArr?.append(purifierHistory.workTimeList!)
- self.purifierHistoryArr?.append(purifierHistory.userTimeList!)
- }
- }
- }
-
- //sensor历史数据
- var sensorHistory:SensorHistory?{
- didSet{
- if let history = self.sensorHistory {
- self.getSensorArr(history)
- }
- }
- }
- //灯控历史数据
- var lampHistory :(energy_consumption:ReportData,lighting_use_schedule:ReportData)?{
- didSet{
- if let lampHistory = self.lampHistory {
- //清空原来的
- self.lampHistoryArr?.removeAll()
- self.lampHistoryArr?.append(lampHistory.energy_consumption)
- self.lampHistoryArr?.append(lampHistory.lighting_use_schedule)
- }
- }
- }
-
-
- var lampHistoryArr : [ReportData]? = [ReportData](){
- didSet{
- // self.reloadSegmentedView()
- }
- }
-
- var purifierHistoryArr :[[String]]? = [[String]]()
- var devId:String? //
- var devType:String? = "1"{
- didSet{
- if let devType = self.devType {
- if devType == "3" {
- titles = ["PM2.5","温度","湿度","甲醛","CO2","光照度","噪声"]
- }else if devType == "4"{
- titles = ["设备工作时间", "过滤时间"]
- } else{
- titles = ["用电量"]
- //隐藏 "灯控使用率"
- }
- }
- }
- }
-
-
- var totalItemWidth: CGFloat = 0 //总长度
- var segmentedDataSource:JXSegmentedBaseDataSource?
- var segmentedView = JXSegmentedView()
- lazy var listContainerView: JXSegmentedListContainerView! = {
- return JXSegmentedListContainerView(dataSource: self)
- }()
- var currentIndex = 0
- var sensorUpdatetimeArr :[String]? = [String]()
- let sensorUnitArr = ["ug/m3","℃","%RH","mg/m3","ppm","lux","dB"]
- let lampUnitArr = ["kWh","H"]
- private var sensorHistoryArr:[[String]]? = [[String]]()
- var titles :[String]? = ["用电量"]
- //隐藏 "灯控使用率"
- override func viewDidLoad() {
- super.viewDidLoad()
- NotificationCenter.default.addObserver(self, selector: #selector(notifyReload(_:)), name: NSNotification.Name(kNotifactionIHRoomLightHistoryVCtrReloadSegmentViewData), object: nil)
- cinfigSegmentdView()
-
- }
- deinit {
- NotificationCenter.default.removeObserver(self)
- }
- func cinfigSegmentdView() {
- self.navigationBarTitle = "历史数据"
- totalItemWidth = UIScreen.main.bounds.size.width - 20*2
- view.backgroundColor = .white
-
- let titleDataSource = JXSegmentedTitleDataSource()
- titleDataSource.itemContentWidth = totalItemWidth/CGFloat(2) - 20
- titleDataSource.titles = titles!
- titleDataSource.titleNormalFont = UIFont(name: Alibaba_PuHuiTi_Regular, size: 13)!
- titleDataSource.titleSelectedFont = UIFont(name: Alibaba_PuHuiTi_Bold, size: 13)!
- titleDataSource.isTitleMaskEnabled = true
- titleDataSource.titleNormalColor = UIColor(hexString: "#657085")!
- titleDataSource.titleSelectedColor = UIColor(hexString: "#FFFFFF")!
- titleDataSource.itemSpacing = 0
- //titleDataSource.itemContentWidth = 120
- // titleDataSource.isItemSpacingAverageEnabled = true
- segmentedDataSource = titleDataSource
- segmentedView.dataSource = segmentedDataSource
- segmentedView.layer.masksToBounds = true
- segmentedView.layer.cornerRadius = 15
- segmentedView.backgroundColor = UIColor(hexString: "#F6F8F7")
- segmentedView.delegate = self
- view.addSubview(segmentedView)
- let indicator = JXSegmentedIndicatorBackgroundView()
- indicator.indicatorHeight = 25
- indicator.backgroundWidthIncrement = -10
- indicator.indicatorWidth = totalItemWidth/CGFloat(2) - 20
- indicator.indicatorColor = UIColor(hexString: "#573F95")!
- indicator.layer.shadowColor = UIColor(hexString: "#573F95")!.cgColor
- indicator.layer.shadowRadius = 3
- indicator.layer.shadowOffset = CGSize.zero
- indicator.layer.shadowOpacity = 0.7
-
- segmentedView.indicators = [indicator]
- segmentedView.listContainer = listContainerView
- view.addSubview(listContainerView)
- }
- override func viewWillAppear(_ animated: Bool) {
- super.viewWillAppear(animated)
- //处于第一个item的时候,才允许屏幕边缘手势返回
- navigationController?.interactivePopGestureRecognizer?.isEnabled = (segmentedView.selectedIndex == 0)
-
- }
- override func viewWillDisappear(_ animated: Bool) {
- super.viewWillDisappear(animated)
- //离开页面的时候,需要恢复屏幕边缘手势,不能影响其他页面
- navigationController?.interactivePopGestureRecognizer?.isEnabled = true
- }
- override func viewDidLayoutSubviews() {
- super.viewDidLayoutSubviews()
- segmentedView.frame = CGRect(x: 20, y: 10, width: totalItemWidth, height: 30)
- listContainerView.frame = CGRect(x: 0, y: 50, width: view.bounds.size.width, height: view.bounds.size.height - 50)
- }
- }
- extension IHRoomLightHistoryVCtr:JXSegmentedViewDelegate{
- func segmentedView(_ segmentedView: JXSegmentedView, didSelectedItemAt index: Int) {
- if let dotDataSource = segmentedDataSource as? JXSegmentedDotDataSource {
- //先更新数据源的数据
- dotDataSource.dotStates[index] = false
- //再调用reloadItem(at: index)
- segmentedView.reloadItem(at: index)
- }
- self.currentIndex = index
- navigationController?.interactivePopGestureRecognizer?.isEnabled = (segmentedView.selectedIndex == 0)
- }
- }
- extension IHRoomLightHistoryVCtr:JXSegmentedListContainerViewDataSource{
- func numberOfLists(in listContainerView: JXSegmentedListContainerView) -> Int {
- return titles!.count
- }
-
- func listContainerView(_ listContainerView: JXSegmentedListContainerView, initListAt index: Int) -> JXSegmentedListContainerViewListDelegate {
- let vc = IHRoomLightHistoryListVCtr()
- vc.devType = self.devType
- vc.devId = self.devId
- if self.devType == "1" || self.devType == "2" {
- let history = self.lampHistoryArr![index]
- vc.history = history.dataList
- vc.updatetimes = history.timeList
- vc.unit = self.lampUnitArr[index]
- }else if self.devType == "3"{
- vc.history = self.sensorHistoryArr![index]
- vc.updatetimes = self.sensorUpdatetimeArr
- vc.unit = self.sensorUnitArr[index]
- }else if self.devType == "4"{
- vc.history = self.purifierHistoryArr![index]
- vc.updatetimes = self.purifierHistroy?.timeList
- vc.unit = "H"
- }
- if let date = self.date_type {
- vc.date_type = date
- }
-
- return vc
- }
-
- }
- extension IHRoomLightHistoryVCtr{
-
- @objc func notifyReload(_ notif:Notification){
- let dict = notif.object as! [String:String]
- let index = dict["index"]
- let date = dict["date"]
- self.date_type = Int(index!)
- if self.devType == "1" || self.devType == "2" {
- getLampHistory(index!, date: date)
- }else if self.devType == "3"{
- requestSensorHistory(index!)
- }else if self.devType == "4"{
- getPurifierHistory(index!, date: date)
- }
-
- }
- func requestSensorHistory(_ date_type:String) {
- HUD.show(.progress)
- HUD.hide(afterDelay: 20) { (isSuccess) in
- if isSuccess == true{
- g_showHUD("请求超时")
- }
- }
- IHSensorService.share.getSensorHistory(self.devId!, date_type: date_type, requestSuccess: { (history) in
- HUD.hide()
- self.sensorHistory = history
-
- self.reloadSegmentedView()
- }) {
- g_showHUD("感应器无历史数据")
- }
- }
-
- //请求sensor历史数据
- func getSensorArr(_ history:SensorHistory) {
- self.sensorHistoryArr?.removeAll() //清空原来的内容
- let pm25 = history.pm25
- let temperature = history.temperature
- let humidity = history.humidity
- let formaldehyde = history.formaldehyde
- let co2 = history.co2
- let illuminace = history.illuminance
- let noise = history.noise
- let updateTime = history.updateTime
- self.sensorUpdatetimeArr = updateTime
- sensorHistoryArr?.append(pm25!)
- sensorHistoryArr?.append(temperature!)
- sensorHistoryArr?.append(humidity!)
- sensorHistoryArr?.append(formaldehyde!)
- sensorHistoryArr?.append(co2!)
- sensorHistoryArr?.append(illuminace!)
- sensorHistoryArr?.append(noise!)
- }
-
- //刷新segmentedView 内容
- func reloadSegmentedView() {
- //默认选择第一个楼层
- segmentedDataSource!.dataSource.removeAll()
- segmentedView.dataSource = segmentedDataSource
- segmentedView.reloadData()
-
- }
-
-
- func getLampHistory(_ dataType:String,dateType:String,date:String?) {
- IHRoomLightService.share.getLampReport(self.devId!, dateType: dateType, dataType: dataType, date: date, requestSuccess: { (data) in
- //self.lampHistory = data
-
- }) {
-
- }
- }
- //请求灯控历史数据
- func getLampHistory(_ index:String,date:String?) {
- var dateType = "0"
- var dateStr = ""
- if index == "0" { //天
- dateType = "0"
-
- }else if index == "1"{//周
- dateType = "4"
- }else if index == "2"{//月
- dateType = "1"
- }else if index == "3"{//年
- dateType = "2"
- }else if index == "4"{//自定义
- dateType = "3"
- dateStr = date!
- }
-
- HUD.show(.progress)
- HUD.hide(afterDelay: 20) { (isSuccess) in
- if isSuccess == true{
- g_showHUD("请求超时")
- }
- }
- var energy_consumption : ReportData?
- var lighting_use_schedule :ReportData?
- let queue = DispatchQueue(label: "com.custom.thread", qos: DispatchQoS.default, attributes: DispatchQueue.Attributes.concurrent)
- let group = DispatchGroup()
-
- queue.async(group: group, qos: .default, flags: []) {
- group.enter()
- IHRoomLightService.share.getLampReport(self.devId!, dateType: dateType, dataType: "0", date: dateStr, requestSuccess: { (data) in
- group.leave()
- energy_consumption = data
- }) {
- group.leave()
- energy_consumption = nil
- }
- }
-
- queue.async(group: group, qos: .default, flags: []) {
- group.enter()
- IHRoomLightService.share.getLampReport(self.devId!, dateType: dateType, dataType: "1", date: date, requestSuccess: { (data) in
- group.leave()
- lighting_use_schedule = data
- }) {
- group.leave()
- lighting_use_schedule = nil
- }
- }
- //回到主线程
- group.notify(queue: DispatchQueue.main) {
- HUD.hide()
-
- if energy_consumption != nil || lighting_use_schedule != nil{
- self.lampHistory?.energy_consumption = energy_consumption!
- self.lampHistory?.lighting_use_schedule = lighting_use_schedule!
- log.debug("结束了 -- \(self.lampHistory)")
- // log.debug("self.lampHistoryArr - \(self.lampHistoryArr)")
- self.reloadSegmentedView()
-
- }else{
- g_showHUD("无数据")
- }
- }
-
-
- }
-
- //请求空气净化器历史数据
- func getPurifierHistory(_ index:String,date:String?) {
- var dateType = "0"
- var dateStr = ""
- if index == "0" { //天
- dateType = "0"
-
- }else if index == "1"{//周
- dateType = "4"
- }else if index == "2"{//月
- dateType = "1"
- }else if index == "3"{//年
- dateType = "2"
- }else if index == "4"{//自定义
- dateType = "3"
- dateStr = date!
- }
- HUD.show(.progress)
- HUD.hide(afterDelay: 20) { (isSuccess) in
- if isSuccess == true{
- g_showHUD("请求超时")
- }
- }
- IHAirService.share.getPurifierReport(self.devId!, dateType: dateType, date: date, requestSuccess: { (history) in
- HUD.hide()
- self.purifierHistroy = history
- self.reloadSegmentedView()
- }) {
- g_showHUD("无数据")
- }
- }
- }
|