package controllers

import (
	"Xcx_New/utils"
	"github.com/jinzhu/gorm"
	"time"

	"Xcx_New/enums"
	"Xcx_New/models"
	"Xcx_New/service"

	"fmt"
	"github.com/astaxie/beego"
)

func DeviceAPIControllerRegistRouters() {
	beego.Router("/api/device/initdata", &DeviceAPIController{}, "get:GetDeviceManageInitData")
	// 设备基本信息
	beego.Router("/api/devices", &DeviceAPIController{}, "get:GetDevices")
	beego.Router("/api/device/baseinfo", &DeviceAPIController{}, "get:GetDeviceBaseInfo")
	beego.Router("/api/device/create", &DeviceAPIController{}, "post:CreateDevice")
	beego.Router("/api/device/modify", &DeviceAPIController{}, "post:ModifyDevice")
	beego.Router("/api/device/disable", &DeviceAPIController{}, "post:DisableDevice")
	// 分区
	beego.Router("/api/device/zones", &DeviceAPIController{}, "get:GetZones")
	beego.Router("/api/device/zone/create", &DeviceAPIController{}, "post:CreateZone")
	beego.Router("/api/device/zone/modify", &DeviceAPIController{}, "post:ModifyZone")
	beego.Router("/api/device/zone/disable", &DeviceAPIController{}, "post:DisableZone")
	// 分组
	beego.Router("/api/device/groups", &DeviceAPIController{}, "get:GetGroups")
	beego.Router("/api/device/group/create", &DeviceAPIController{}, "post:CreateGroup")
	beego.Router("/api/device/group/modify", &DeviceAPIController{}, "post:ModifyGroup")
	beego.Router("/api/device/group/disable", &DeviceAPIController{}, "post:DisableGroup")
	// 机号
	beego.Router("/api/device/numbers", &DeviceAPIController{}, "get:GetNumbers")
	beego.Router("/api/device/number/create", &DeviceAPIController{}, "post:CreateNumber")
	beego.Router("/api/device/number/modify", &DeviceAPIController{}, "post:ModifyNumber")
	beego.Router("/api/device/number/disable", &DeviceAPIController{}, "post:DisableNumber")

	//透析机管理
	beego.Router("/api/management/getallsubregion", &DeviceAPIController{}, "get:GetAllSubregion")
	//beego.Router("/api/management/savemanageinfo",&DeviceAPIController{},"post:SaveManageInfo")
	beego.Router("/api/management/getallmachineinfo", &DeviceAPIController{}, "get:GetAllMachineInfo")
	beego.Router("/api/management/getallmachine", &DeviceAPIController{}, "get:GetAllMachine")
	beego.Router("/api/management/getmachinedetail", &DeviceAPIController{}, "get:GetMachineDetail")
	beego.Router("/api/management/getallmachinetwo", &DeviceAPIController{}, "get:GetAllMachineTwo")
}

type DeviceAPIController struct {
	BaseAuthAPIController
}

// /api/device/initdata [get] GetDeviceManageInitData
func (this *DeviceAPIController) GetDeviceManageInitData() {
	adminInfo := this.GetAdminUserInfo()
	zones, getZonesErr := service.GetAllValidDeviceZones(adminInfo.CurrentOrgId)
	if getZonesErr != nil {
		this.ErrorLog("获取设备分区列表失败:%v", getZonesErr)
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
		return
	}
	groups, getGroupsErr := service.GetAllValidDeviceGroups(adminInfo.CurrentOrgId)
	if getGroupsErr != nil {
		this.ErrorLog("获取设备分组列表失败:%v", getGroupsErr)
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
		return
	}
	numbers, getNumbersErr := service.GetAllValidDeviceNumbers(adminInfo.CurrentOrgId)
	if getNumbersErr != nil {
		this.ErrorLog("获取设备机号列表失败:%v", getNumbersErr)
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
		return
	}

	this.ServeSuccessJSON(map[string]interface{}{
		"zones":   zones,
		"groups":  groups,
		"numbers": numbers,
	})
}

// /api/devices [get] GetDevices
// @param type?:int 1.透析机 2.水处理机 其他.全部
// @param zone?:int
func (this *DeviceAPIController) GetDevices() {
	type_, _ := this.GetInt("type")
	zoneID, _ := this.GetInt64("zone")
	if type_ < 0 || type_ > 2 {
		type_ = 0
	}
	if zoneID < 0 {
		zoneID = 0
	}

	adminInfo := this.GetAdminUserInfo()
	devices, getDevicesErr := service.GetValidDevicesBy(adminInfo.CurrentOrgId, type_, zoneID)
	if getDevicesErr != nil {
		this.ErrorLog("获取设备列表失败:%v", getDevicesErr)
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
		return
	}
	this.ServeSuccessJSON(map[string]interface{}{
		"devices": devices,
	})
}

// /api/device/baseinfo [get] GetDeviceBaseInfo
// @param id:int models.Device.ID
func (this *DeviceAPIController) GetDeviceBaseInfo() {
	deviceID, _ := this.GetInt64("id")
	if deviceID <= 0 {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
		return
	}
	adminInfo := this.GetAdminUserInfo()
	device, getDeviceErr := service.GetDeviceByID(adminInfo.CurrentOrgId, deviceID)
	if getDeviceErr != nil {
		this.ErrorLog("获取设备失败:%v", getDeviceErr)
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
		return
	} else if device == nil || device.Status != 1 {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceNotExist)
		return
	}

	if device.DeviceType == 1 {
		dmDevice, getDMDeviceErr := service.GetDMDeviceByID(adminInfo.CurrentOrgId, device.DMID)
		if getDMDeviceErr != nil {
			this.ErrorLog("获取透析机失败:%v", getDMDeviceErr)
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
			return
		} else if dmDevice == nil || dmDevice.Status != 1 {
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceNotExist)
			return
		}
		this.ServeSuccessJSON(map[string]interface{}{
			"device_type":      device.DeviceType,
			"device_number_id": device.DeviceNumberID,
			"device_info":      dmDevice,
		})

	} else if device.DeviceType == 2 {
		wteDevice, getWTEDeviceErr := service.GetWTEDeviceByID(adminInfo.CurrentOrgId, device.WTEID)
		if getWTEDeviceErr != nil {
			this.ErrorLog("获取水处理机失败:%v", getWTEDeviceErr)
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
			return
		} else if wteDevice == nil || wteDevice.Status != 1 {
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceNotExist)
			return
		}
		this.ServeSuccessJSON(map[string]interface{}{
			"device_type":      device.DeviceType,
			"device_number_id": device.DeviceNumberID,
			"device_info":      wteDevice,
		})
	}
}

// /api/device/create [post] CreateDevice
// @param type:int 					设备类型 1.透析机 2.水处理机
// @param serial_number:string 		序列号
// @param name:string 				设备名
// @param device_number_id?:int 	机号
// @param manufacturer?:string 		生产厂家
// @param repair_factory?:string	维修厂家
// @param model?:string				型号
// @param department?:string		使用科室
// @param department_number?:string	科室编号
// @param purchase_date?:int		购买日期
// @param install_date?:int			安装日期
// @param commissioning_date?:int	启用日期
// @param maintainer?:string		维修工程师
// @param maintenance_call?:string	维修联系电话
// @param warranty_period?:string	保修期限
// @param device_status?:int 		机器状态 1.使用机 2.备用机 3.急诊机 4.报废机
// @param initial_use_times?:int	初始使用次数
// @param mark?:string				备注
// @param retirement_date?:int		报废日期
// @param retirement_reason?:string	报废原因
// @param service_life?:int			使用年限
// @param working_time?:int			工作时长
// @param treatment_mode?:string	治疗模式 type = 1
// @param reverse_osmosis_mode?:int	反渗模式 type = 2
func (this *DeviceAPIController) CreateDevice() {
	deviceType, _ := this.GetInt("type")
	serialNumber := this.GetString("serial_number")
	deviceName := this.GetString("name")
	if deviceType < 1 || 2 < deviceType || len(serialNumber) == 0 || len(deviceName) == 0 {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
		return
	}
	deviceNumberID, _ := this.GetInt64("device_number_id")
	manufacturer := this.GetString("manufacturer")
	repairFactory := this.GetString("repair_factory")
	model := this.GetString("model")
	department := this.GetString("department")
	departmentNumber := this.GetString("department_number")
	purchaseDate, _ := this.GetInt64("purchase_date")
	installDate, _ := this.GetInt64("install_date")
	commissioningDate, _ := this.GetInt64("commissioning_date")
	maintainer := this.GetString("maintainer")
	maintenanceCall := this.GetString("maintenance_call")
	warrantyPeriod := this.GetString("warranty_period")
	deviceStatus, _ := this.GetInt("device_status")
	initialUseTimes, _ := this.GetInt("initial_use_times")
	mark := this.GetString("mark")
	retirementDate, _ := this.GetInt64("retirement_date")
	retirementReason := this.GetString("retirement_reason")
	serviceLife, _ := this.GetInt("service_life")
	workingTime, _ := this.GetInt("working_time")
	treatmentMode := this.GetString("treatment_mode")
	reverseOsmosisMode, _ := this.GetInt("reverse_osmosis_mode")

	adminInfo := this.GetAdminUserInfo()
	var deviceNumber *models.DeviceNumber
	if deviceNumberID != 0 {
		var getNumberErr error
		deviceNumber, getNumberErr = service.GetDeviceNumberByID(adminInfo.CurrentOrgId, deviceNumberID)
		if getNumberErr != nil {
			this.ErrorLog("获取机号失败:%v", getNumberErr)
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
			return
		} else if deviceNumber == nil || deviceNumber.Status != 1 {
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceNumberNotExist)
			return
		}
	}
	if deviceStatus < 1 || 4 < deviceStatus {
		deviceStatus = 0
	}

	if deviceType == 1 {
		dmDevice := &models.DeviceDM{
			OrgID:             adminInfo.CurrentOrgId,
			SerialNumber:      serialNumber,
			Name:              deviceName,
			Manufacturer:      manufacturer,
			RepairFactory:     repairFactory,
			Model:             model,
			Department:        department,
			DepartmentNumber:  departmentNumber,
			PurchaseDate:      purchaseDate,
			InstallDate:       installDate,
			CommissioningDate: commissioningDate,
			Maintainer:        maintainer,
			MaintenanceCall:   maintenanceCall,
			WarrantyPeriod:    warrantyPeriod,
			DeviceStatus:      deviceStatus,
			InitialUseTimes:   initialUseTimes,
			Mark:              mark,
			RetirementDate:    retirementDate,
			RetirementReason:  retirementReason,
			ServiceLife:       serviceLife,
			WorkingTime:       workingTime,
			TreatmentMode:     treatmentMode,
		}
		device, createErr := service.CreateDMDevice(dmDevice, deviceNumber)
		if createErr != nil {
			this.ErrorLog("创建血透机失败:%v")
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDBCreate)
			return
		}
		this.ServeSuccessJSON(map[string]interface{}{
			"device": device,
		})

	} else if deviceType == 2 {
		wteDevice := &models.DeviceWTE{
			OrgID:              adminInfo.CurrentOrgId,
			SerialNumber:       serialNumber,
			Name:               deviceName,
			Manufacturer:       manufacturer,
			RepairFactory:      repairFactory,
			Model:              model,
			Department:         department,
			DepartmentNumber:   departmentNumber,
			PurchaseDate:       purchaseDate,
			InstallDate:        installDate,
			CommissioningDate:  commissioningDate,
			Maintainer:         maintainer,
			MaintenanceCall:    maintenanceCall,
			WarrantyPeriod:     warrantyPeriod,
			DeviceStatus:       deviceStatus,
			InitialUseTimes:    initialUseTimes,
			Mark:               mark,
			RetirementDate:     retirementDate,
			RetirementReason:   retirementReason,
			ServiceLife:        serviceLife,
			WorkingTime:        workingTime,
			ReverseOsmosisMode: reverseOsmosisMode,
		}
		device, createErr := service.CreateWTEDevice(wteDevice, deviceNumber)
		if createErr != nil {
			this.ErrorLog("创建水处理机失败:%v")
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDBCreate)
			return
		}
		this.ServeSuccessJSON(map[string]interface{}{
			"device": device,
		})
	}
}

// /api/device/modify [post] ModifyDevice
// @param device_id:int				设备 ID（models.Device.ID）
// @param serial_number:string 		序列号
// @param name:string 				设备名
// @param device_number_id?:int 	机号
// @param manufacturer?:string 		生产厂家
// @param repair_factory?:string	维修厂家
// @param model?:string				型号
// @param department?:string		使用科室
// @param department_number?:string	科室编号
// @param purchase_date?:int		购买日期
// @param install_date?:int			安装日期
// @param commissioning_date?:int	启用日期
// @param maintainer?:string		维修工程师
// @param maintenance_call?:string	维修联系电话
// @param warranty_period?:string	保修期限
// @param device_status?:int 		机器状态 1.使用机 2.备用机 3.急诊机 4.报废机
// @param initial_use_times?:int	初始使用次数
// @param mark?:string				备注
// @param retirement_date?:int		报废日期
// @param retirement_reason?:string	报废原因
// @param service_life?:int			使用年限
// @param working_time?:int			工作时长
// @param treatment_mode?:string	治疗模式 type = 1
// @param reverse_osmosis_mode?:int	反渗模式 type = 2
func (this *DeviceAPIController) ModifyDevice() {
	deviceID, _ := this.GetInt64("device_id")
	serialNumber := this.GetString("serial_number")
	deviceName := this.GetString("name")
	if deviceID <= 0 || len(serialNumber) == 0 || len(deviceName) == 0 {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
		return
	}

	deviceNumberID, _ := this.GetInt64("device_number_id")
	manufacturer := this.GetString("manufacturer")
	repairFactory := this.GetString("repair_factory")
	model := this.GetString("model")
	department := this.GetString("department")
	departmentNumber := this.GetString("department_number")
	purchaseDate, _ := this.GetInt64("purchase_date")
	installDate, _ := this.GetInt64("install_date")
	commissioningDate, _ := this.GetInt64("commissioning_date")
	maintainer := this.GetString("maintainer")
	maintenanceCall := this.GetString("maintenance_call")
	warrantyPeriod := this.GetString("warranty_period")
	deviceStatus, _ := this.GetInt("device_status")
	initialUseTimes, _ := this.GetInt("initial_use_times")
	mark := this.GetString("mark")
	retirementDate, _ := this.GetInt64("retirement_date")
	retirementReason := this.GetString("retirement_reason")
	serviceLife, _ := this.GetInt("service_life")
	workingTime, _ := this.GetInt("working_time")
	treatmentMode := this.GetString("treatment_mode")
	reverseOsmosisMode, _ := this.GetInt("reverse_osmosis_mode")

	adminInfo := this.GetAdminUserInfo()
	var deviceNumber *models.DeviceNumber
	if deviceNumberID != 0 {
		var getNumberErr error
		deviceNumber, getNumberErr = service.GetDeviceNumberByID(adminInfo.CurrentOrgId, deviceNumberID)
		if getNumberErr != nil {
			this.ErrorLog("获取机号失败:%v", getNumberErr)
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
			return
		} else if deviceNumber == nil || deviceNumber.Status != 1 {
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceNumberNotExist)
			return
		}
	}
	if deviceStatus < 1 || 4 < deviceStatus {
		deviceStatus = 0
	}

	device, getDeviceErr := service.GetDeviceByID(adminInfo.CurrentOrgId, deviceID)
	if getDeviceErr != nil {
		this.ErrorLog("获取设备失败:%v", getDeviceErr)
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
		return
	} else if device == nil || device.Status != 1 {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceNotExist)
		return
	}
	if device.DeviceType == 1 {
		dmDevice, getDMDeviceErr := service.GetDMDeviceByID(adminInfo.CurrentOrgId, device.DMID)
		if getDMDeviceErr != nil {
			this.ErrorLog("获取透析机失败:%v", getDMDeviceErr)
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
			return
		} else if dmDevice == nil || dmDevice.Status != 1 {
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceNotExist)
			return
		}
		dmDevice.SerialNumber = serialNumber
		dmDevice.Name = deviceName
		dmDevice.Manufacturer = manufacturer
		dmDevice.RepairFactory = repairFactory
		dmDevice.Model = model
		dmDevice.Department = department
		dmDevice.DepartmentNumber = departmentNumber
		dmDevice.PurchaseDate = purchaseDate
		dmDevice.InstallDate = installDate
		dmDevice.CommissioningDate = commissioningDate
		dmDevice.Maintainer = maintainer
		dmDevice.MaintenanceCall = maintenanceCall
		dmDevice.WarrantyPeriod = warrantyPeriod
		dmDevice.DeviceStatus = deviceStatus
		dmDevice.InitialUseTimes = initialUseTimes
		dmDevice.Mark = mark
		dmDevice.RetirementDate = retirementDate
		dmDevice.RetirementReason = retirementReason
		dmDevice.ServiceLife = serviceLife
		dmDevice.WorkingTime = workingTime
		dmDevice.TreatmentMode = treatmentMode
		updateErr := service.UpdateDMDevice(dmDevice, deviceNumber, device)
		if updateErr != nil {
			this.ErrorLog("更新血透机失败:%v", updateErr)
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDBUpdate)
			return
		}
		this.ServeSuccessJSON(map[string]interface{}{
			"device": device,
		})

	} else if device.DeviceType == 2 {
		wteDevice, getWTEDeviceErr := service.GetWTEDeviceByID(adminInfo.CurrentOrgId, device.WTEID)
		if getWTEDeviceErr != nil {
			this.ErrorLog("获取水处理机失败:%v", getWTEDeviceErr)
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
			return
		} else if wteDevice == nil || wteDevice.Status != 1 {
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceNotExist)
			return
		}
		wteDevice.SerialNumber = serialNumber
		wteDevice.Name = deviceName
		wteDevice.Manufacturer = manufacturer
		wteDevice.RepairFactory = repairFactory
		wteDevice.Model = model
		wteDevice.Department = department
		wteDevice.DepartmentNumber = departmentNumber
		wteDevice.PurchaseDate = purchaseDate
		wteDevice.InstallDate = installDate
		wteDevice.CommissioningDate = commissioningDate
		wteDevice.Maintainer = maintainer
		wteDevice.MaintenanceCall = maintenanceCall
		wteDevice.WarrantyPeriod = warrantyPeriod
		wteDevice.DeviceStatus = deviceStatus
		wteDevice.InitialUseTimes = initialUseTimes
		wteDevice.Mark = mark
		wteDevice.RetirementDate = retirementDate
		wteDevice.RetirementReason = retirementReason
		wteDevice.ServiceLife = serviceLife
		wteDevice.WorkingTime = workingTime
		wteDevice.ReverseOsmosisMode = reverseOsmosisMode
		updateErr := service.UpdateWTEDevice(wteDevice, deviceNumber, device)
		if updateErr != nil {
			this.ErrorLog("更新水处理机失败:%v", updateErr)
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDBUpdate)
			return
		}
		this.ServeSuccessJSON(map[string]interface{}{
			"device": device,
		})
	}
}

// /api/device/disable [post] DisableDevice
// @param id:int
func (this *DeviceAPIController) DisableDevice() {
	deviceID, _ := this.GetInt64("id")
	if deviceID <= 0 {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
		return
	}
	adminUserInfo := this.GetAdminUserInfo()
	device, getDeviceErr := service.GetDeviceByID(adminUserInfo.CurrentOrgId, deviceID)
	if getDeviceErr != nil {
		this.ErrorLog("获取设备失败:%v", getDeviceErr)
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
		return
	} else if device == nil {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceNotExist)
		return
	}
	if device.Status == 1 {
		device.Status = 0
		device.ModifyTime = time.Now().Unix()
		updateErr := service.UpdateDevice(device)
		if updateErr != nil {
			this.ErrorLog("删除设备失败:%v", updateErr)
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
			return
		}
	}
	this.ServeSuccessJSON(nil)
}

// /api/device/zones [get] GetZones
func (this *DeviceAPIController) GetZones() {
	adminInfo := this.GetAdminUserInfo()
	zones, getZonesErr := service.GetAllValidDeviceZones(adminInfo.CurrentOrgId)
	if getZonesErr != nil {
		this.ErrorLog("获取设备分区列表失败:%v", getZonesErr)
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
		return
	}
	this.ServeSuccessJSON(map[string]interface{}{
		"zones": zones,
	})
}

// /api/device/zone/create [post] CreateZone
// @param name:string
// @param type:int
func (this *DeviceAPIController) CreateZone() {
	name := this.GetString("name")
	type_, _ := this.GetInt("type")
	if len(name) == 0 || type_ <= 0 {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
		return
	}

	adminInfo := this.GetAdminUserInfo()
	_, errcode := service.GetZoneByName(name, adminInfo.CurrentOrgId)
	fmt.Println("errcode=----------", errcode)
	if errcode == gorm.ErrRecordNotFound {
		zone, createErr := service.CreateDeviceZone(adminInfo.CurrentOrgId, name, type_)
		if createErr != nil {
			this.ErrorLog("创建设备分区失败:%v", createErr)
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDBCreate)
			return
		}
		this.ServeSuccessJSON(map[string]interface{}{
			"zone": zone,
		})
	} else if errcode == nil {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDBCreate)
		return
	}
}

// /api/device/zone/modify [post] ModifyZone
// @param id:int
// @param name:string
// @param type:int
func (this *DeviceAPIController) ModifyZone() {
	id, _ := this.GetInt64("id")
	name := this.GetString("name")
	type_, _ := this.GetInt("type")
	if id <= 0 || len(name) == 0 || type_ <= 0 {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
		return
	}

	adminInfo := this.GetAdminUserInfo()
	zone, getZoneErr := service.GetDeviceZoneByID(adminInfo.CurrentOrgId, id)
	if getZoneErr != nil {
		this.ErrorLog("获取设备分区失败:%v", getZoneErr)
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
		return
	} else if zone == nil || zone.Status != 1 {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceZoneNotExist)
		return
	}

	zone.Name = name
	zone.Type = type_
	zone.ModifyTime = time.Now().Unix()

	byName, _ := service.GetZoneByNameOne(name, adminInfo.CurrentOrgId)
	if byName.ID > 0 && byName.ID != id {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
		return
	}
	updateErr := service.UpdateDeviceZone(zone)
	if updateErr != nil {
		this.ErrorLog("修改设备分区失败:%v", updateErr)
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDBUpdate)
		return
	}
	this.ServeSuccessJSON(nil)
}

// /api/device/zone/disable [post] DisableZone
// @param id:int
func (this *DeviceAPIController) DisableZone() {
	zoneID, _ := this.GetInt64("id")
	if zoneID <= 0 {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
		return
	}
	adminUserInfo := this.GetAdminUserInfo()
	zone, getZoneErr := service.GetDeviceZoneByID(adminUserInfo.CurrentOrgId, zoneID)
	if getZoneErr != nil {
		this.ErrorLog("获取设备分区失败：%v", getZoneErr)
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
		return
	} else if zone == nil {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceZoneNotExist)
		return
	}
	if zone.Status == 1 {
		countOfDeviceNumber, getCountErr := service.GetDeviceNumberCountForZoneID(adminUserInfo.CurrentOrgId, zoneID)
		if getCountErr != nil {
			this.ErrorLog("获取分区内床位数量失败:%v", getCountErr)
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
			return
		}
		if countOfDeviceNumber != 0 {
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceZoneCannotDisable)
			return
		}

		zone.Status = 0
		zone.ModifyTime = time.Now().Unix()
		updateErr := service.UpdateDeviceZone(zone)
		if updateErr != nil {
			this.ErrorLog("删除分区失败：%v", updateErr)
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
			return
		}
	}
	this.ServeSuccessJSON(nil)
}

// /api/device/groups [get] GetGroups
func (this *DeviceAPIController) GetGroups() {
	adminInfo := this.GetAdminUserInfo()
	groups, getGroupsErr := service.GetAllValidDeviceGroups(adminInfo.CurrentOrgId)
	if getGroupsErr != nil {
		//beego.Error("获取设备分组列表失败:", getGroupsErr)
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
		return
	}
	this.ServeSuccessJSON(map[string]interface{}{
		"groups": groups,
	})
}

// /api/device/group/create [post] CreateGroup
// @param name:string
func (this *DeviceAPIController) CreateGroup() {
	name := this.GetString("name")
	if len(name) == 0 {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
		return
	}

	adminInfo := this.GetAdminUserInfo()
	_, errcode := service.GetDeviceGroupName(name, adminInfo.CurrentOrgId)
	if errcode == gorm.ErrRecordNotFound {
		group, createErr := service.CreateDeviceGroup(adminInfo.CurrentOrgId, name)
		if createErr != nil {
			this.ErrorLog("创建设备分组失败:%v", createErr)
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDBCreate)
			return
		}
		this.ServeSuccessJSON(map[string]interface{}{
			"group": group,
		})
	} else if errcode == nil {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDBCreate)
		return
	}

}

// /api/device/group/modify [post] ModifyGroup
// @param id:int
// @param name:string
func (this *DeviceAPIController) ModifyGroup() {
	id, _ := this.GetInt64("id")
	name := this.GetString("name")
	if id <= 0 || len(name) == 0 {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
		return
	}

	adminInfo := this.GetAdminUserInfo()
	group, getGroupErr := service.GetDeviceGroupByID(adminInfo.CurrentOrgId, id)
	if getGroupErr != nil {
		this.ErrorLog("获取设备分组失败:%v", getGroupErr)
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
		return
	} else if group == nil || group.Status != 1 {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceGroupNotExist)
		return
	}

	group.Name = name
	group.ModifyTime = time.Now().Unix()
	byName, getGroupErr := service.GetUpdateDeviceGroupByName(name, adminInfo.CurrentOrgId)
	if byName.ID > 0 && byName.ID != id {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
		return
	}
	updateErr := service.UpdateDeviceGroup(group)
	if updateErr != nil {
		this.ErrorLog("修改设备分组失败:%v", updateErr)
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDBUpdate)
		return
	}
	this.ServeSuccessJSON(nil)
}

// /api/device/group/disable [post] DisableGroup
// @param id:int
func (this *DeviceAPIController) DisableGroup() {
	groupID, _ := this.GetInt64("id")
	if groupID <= 0 {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
		return
	}
	adminUserInfo := this.GetAdminUserInfo()
	group, getGroupErr := service.GetDeviceGroupByID(adminUserInfo.CurrentOrgId, groupID)
	if getGroupErr != nil {
		this.ErrorLog("获取设备分组失败：%v", getGroupErr)
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
		return
	} else if group == nil {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceGroupNotExist)
		return
	}
	if group.Status == 1 {
		countOfDeviceNumber, getCountErr := service.GetDeviceNumberCountForGroupID(adminUserInfo.CurrentOrgId, groupID)
		if getCountErr != nil {
			this.ErrorLog("获取分组内床位数量失败:%v", getCountErr)
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
			return
		}
		if countOfDeviceNumber != 0 {
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceZoneCannotDisable)
			return
		}

		group.Status = 0
		group.ModifyTime = time.Now().Unix()
		updateErr := service.UpdateDeviceGroup(group)
		if updateErr != nil {
			this.ErrorLog("删除分组失败：%v", updateErr)
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
			return
		}
	}
	this.ServeSuccessJSON(nil)
}

// /api/device/numbers [get] GetNumbers
func (this *DeviceAPIController) GetNumbers() {
	adminInfo := this.GetAdminUserInfo()
	numbers, getNumbersErr := service.GetAllValidDeviceNumbers(adminInfo.CurrentOrgId)
	if getNumbersErr != nil {
		//beego.Error("获取机号列表失败:", getNumbersErr)
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
		return
	}
	this.ServeSuccessJSON(map[string]interface{}{
		"numbers": numbers,
	})
}

// /api/device/number/create [post] CreateNumber
// @param number:string
// @param zone:int
// @param group:int
func (this *DeviceAPIController) CreateNumber() {
	num := this.GetString("number")
	zoneID, _ := this.GetInt64("zone")
	groupID, _ := this.GetInt64("group")
	sort, _ := this.GetInt64("sort")
	if len(num) == 0 || zoneID <= 0 || groupID <= 0 {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
		return
	}

	adminInfo := this.GetAdminUserInfo()
	zone, getZoneErr := service.GetDeviceZoneByID(adminInfo.CurrentOrgId, zoneID)
	if getZoneErr != nil {
		this.ErrorLog("获取设备分区失败:%v", getZoneErr)
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
		return
	} else if zone == nil || zone.Status != 1 {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceZoneNotExist)
		return
	}

	group, getGroupErr := service.GetDeviceGroupByID(adminInfo.CurrentOrgId, groupID)
	if getGroupErr != nil {
		this.ErrorLog("获取设备分组失败:%v", getGroupErr)
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
		return
	} else if group == nil || group.Status != 1 {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceGroupNotExist)
		return
	}

	_, errcode := service.GetCreateDeviceNumber(num, adminInfo.CurrentOrgId)
	if errcode == gorm.ErrRecordNotFound {
		number, createErr := service.CreateDeviceNumber(adminInfo.CurrentOrgId, num, zoneID, groupID, sort)
		if createErr != nil {
			this.ErrorLog("创建机号失败:%v", createErr)
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDBCreate)
			return
		}
		numberJson := map[string]interface{}{
			"id":         number.ID,
			"number":     number.Number,
			"zone_id":    number.ZoneID,
			"group_id":   number.GroupID,
			"zone_name":  zone.Name,
			"group_name": group.Name,
			"sort":       number.Sort,
		}
		this.ServeSuccessJSON(map[string]interface{}{
			"number": numberJson,
		})
	} else if errcode == nil {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDBCreate)
		return
	}

}

// /api/device/number/modify [post] ModifyNumber
// @param id:int
// @param number:string
// @param zone:int
// @param group:int
func (this *DeviceAPIController) ModifyNumber() {
	id, _ := this.GetInt64("id")
	num := this.GetString("number")
	zoneID, _ := this.GetInt64("zone")
	groupID, _ := this.GetInt64("group")
	sort, _ := this.GetInt64("sort")
	if id <= 0 || len(num) == 0 || zoneID <= 0 || groupID <= 0 {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
		return
	}

	adminInfo := this.GetAdminUserInfo()
	number, getNumberErr := service.GetDeviceNumberByID(adminInfo.CurrentOrgId, id)
	if getNumberErr != nil {
		this.ErrorLog("获取机号失败:%v", getNumberErr)
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
		return
	} else if number == nil || number.Status != 1 {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceNumberNotExist)
		return
	}

	zone, getZoneErr := service.GetDeviceZoneByID(adminInfo.CurrentOrgId, zoneID)
	if getZoneErr != nil {
		this.ErrorLog("获取设备分区失败:%v", getZoneErr)
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
		return
	} else if zone == nil || zone.Status != 1 {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceZoneNotExist)
		return
	}

	group, getGroupErr := service.GetDeviceGroupByID(adminInfo.CurrentOrgId, groupID)
	if getGroupErr != nil {
		this.ErrorLog("获取设备分组失败:%v", getGroupErr)
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
		return
	} else if group == nil || group.Status != 1 {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceGroupNotExist)
		return
	}

	number.Number = num
	number.ZoneID = zoneID
	number.GroupID = groupID
	number.Sort = sort
	byName, _ := service.GetDeviceNumberByName(num, adminInfo.CurrentOrgId)
	if byName.ID > 0 && byName.ID != id {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
		return
	}
	updateErr := service.UpdateDeviceNumber(number)
	if updateErr != nil {
		this.ErrorLog("修改机号失败:%v", updateErr)
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDBUpdate)
		return
	}

	numberJson := map[string]interface{}{
		"id":         number.ID,
		"number":     number.Number,
		"zone_id":    number.ZoneID,
		"group_id":   number.GroupID,
		"zone_name":  zone.Name,
		"group_name": group.Name,
		"sort":       number.Sort,
	}
	this.ServeSuccessJSON(map[string]interface{}{
		"number": numberJson,
	})
}

// /api/device/number/disable [post] DisableNumber
// @param id:int
func (this *DeviceAPIController) DisableNumber() {
	deviceNumberID, _ := this.GetInt64("id")
	if deviceNumberID <= 0 {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
		return
	}
	adminUserInfo := this.GetAdminUserInfo()
	deviceNumber, getDeviceNumberErr := service.GetDeviceNumberByID(adminUserInfo.CurrentOrgId, deviceNumberID)
	if getDeviceNumberErr != nil {
		this.ErrorLog("获取机号失败：%v", getDeviceNumberErr)
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
		return
	} else if deviceNumber == nil {
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceNumberNotExist)
		return
	}

	if deviceNumber.Status == 1 {
		countOfDevice, getCountErr := service.GetDeviceCountForDeviceNumberID(adminUserInfo.CurrentOrgId, deviceNumberID)
		if getCountErr != nil {
			this.ErrorLog("获取床位的设备数量失败:%v", getCountErr)
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
			return
		} else if countOfDevice != 0 {
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceNumberCannotDisableCuzDevice)
			return
		}

		now := time.Now()
		todayStr := now.Format("2006-01-02")
		today, _ := utils.ParseTimeStringToTime("2006-01-02", todayStr)
		countOfSch, getSchCountErr := service.GetScheduleCountForDeviceNumber(adminUserInfo.CurrentOrgId, deviceNumberID, today.Unix())
		if getSchCountErr != nil {
			this.ErrorLog("获取床位的排班失败:%v", getSchCountErr)
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
			return
		} else if countOfSch != 0 {
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceNumberCannotDisableCuzSchedule)
			return
		}

		countOfSchTempItem, getSchTempItemCountErr := service.GetScheduleTemplateItemCountForDeviceNumber(adminUserInfo.CurrentOrgId, deviceNumberID)
		if getSchTempItemCountErr != nil {
			this.ErrorLog("获取床位的排班模板失败:%v", getSchTempItemCountErr)
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
			return
		} else if countOfSchTempItem != 0 {
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDeviceNumberCannotDisableCuzSchTemplate)
			return
		}

		deviceNumber.Status = 0
		deviceNumber.ModifyTime = time.Now().Unix()
		updateErr := service.UpdateDeviceNumber(deviceNumber)
		if updateErr != nil {
			this.ErrorLog("删除床位号失败:%V", updateErr)
			this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
			return
		}
	}
	this.ServeSuccessJSON(nil)

}

func (this *DeviceAPIController) GetAllSubregion() {
	adminInfo := this.GetAdminUserInfo()
	zones, getZonesErr := service.GetAllValidDeviceZones(adminInfo.CurrentOrgId)
	if getZonesErr != nil {
		this.ErrorLog("获取设备分区列表失败:%v", getZonesErr)
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
		return
	}
	numbers, getNumbersErr := service.GetAllValidDeviceNumbers(adminInfo.CurrentOrgId)
	if getNumbersErr != nil {
		this.ErrorLog("获取床位失败:%v", getNumbersErr)
		this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
		return
	}

	devicenumber, err := service.GetAllBedNumber(adminInfo.CurrentOrgId)
	fmt.Println("err", err)
	this.ServeSuccessJSON(map[string]interface{}{
		"zones":        zones,
		"numbers":      numbers,
		"devicenumber": devicenumber,
	})
}

//func (this *DeviceAPIController)  SaveManageInfo()  {
//	adminUserInfo := this.GetAdminUserInfo()
//	orgid := adminUserInfo.CurrentOrgId
//	fmt.Println("机构id",orgid)
//	dataBody := make(map[string]interface{}, 0)
//	err := json.Unmarshal(this.Ctx.Input.RequestBody, &dataBody)
//	fmt.Println("err",err)
//	serial_numbe:= int64(dataBody["serial_number"].(float64))
//	fmt.Println("序列号",serial_numbe)
//	device_type := int64(dataBody["device_type"].(float64))
//	fmt.Println("设备类型",device_type)
//	bed_number := int64(dataBody["bed_number"].(float64))
//	fmt.Println("床位号",bed_number)
//	//通过床位id获取区号id
//	number, err := service.GetZoneId(bed_number, orgid)
//	fmt.Println("获取分区id错误",err)
//	device_name := dataBody["device_name"].(string)
//	fmt.Println("设备名称",device_name)
//	manufacture_factory := dataBody["manufacture_factory"].(string)
//	fmt.Println("生产厂家",manufacture_factory)
//	service_manufacturer := dataBody["service_manufacturer"].(string)
//	fmt.Println("维修厂家",service_manufacturer)
//	unit_type	:= dataBody["unit_type"].(string)
//	fmt.Println("设备型号",unit_type)
//	use_section := dataBody["use_section"].(string)
//	fmt.Println("使用科室",use_section)
//	section_number := dataBody["section_number"].(string)
//	fmt.Println("科室编号",section_number)
//	buy_date := dataBody["buy_date"].(string)
//	fmt.Println("buy_date",buy_date)
//	timeLayout := "2006-01-02 15:04:05"
//	theTime, err := utils.ParseTimeStringToTime(timeLayout, buy_date+" 00:00:00")
//	buydate := theTime.Unix()
//	int_num := *(*int)(unsafe.Pointer(&buydate))
//	if(int_num<0){
//	   buydate = 0
//	}
//	fmt.Println("购买日期",buydate)
//
//	install_date := dataBody["install_date"].(string)
//	toTime, err := utils.ParseTimeStringToTime(timeLayout, install_date+" 00:00:00")
//	installdate := toTime.Unix()
//	buy_num := *(*int)(unsafe.Pointer(&installdate))
//	if(buy_num < 0){
//	   installdate = 0
//	}
//	fmt.Println("安装日期",installdate)
//
//	start_date := dataBody["start_date"].(string)
//	stringToTime, err := utils.ParseTimeStringToTime(timeLayout, start_date+" 00:00:00")
//	startdate := stringToTime.Unix()
//	start_num := *(*int)(unsafe.Pointer(&startdate))
//	if(start_num < 0){
//		startdate = 0
//	}
//	fmt.Println("启用日期",startdate)
//
//	maintenance_engineer := dataBody["maintenance_engineer"].(string)
//	fmt.Println("维修工程",maintenance_engineer)
//	telephone := dataBody["telephone"].(string)
//	fmt.Println("telephone",telephone)
//	guarantee_date := dataBody["guarantee_date"].(string)
//	fmt.Println("保修期限",guarantee_date)
//	machine_status := int64(dataBody["machine_status"].(float64))
//	fmt.Println("机器状态",machine_status)
//	user_total := dataBody["user_total"].(string)
//	fmt.Println("初次使用次数",user_total)
//	disinfection_mode := int64(dataBody["Disinfection_mode"].(float64))
//	fmt.Println("消毒方式",disinfection_mode)
//	remarks := dataBody["remarks"].(string)
//	fmt.Println("备注",remarks)
//	rubbish_date := dataBody["rubbish_date"].(string)
//	timeStringToTime, err := utils.ParseTimeStringToTime(timeLayout, rubbish_date+" 00:00:00")
//	rubbishdate := timeStringToTime.Unix()
//	rubb_num := *(*int)(unsafe.Pointer(&rubbishdate))
//	if(rubb_num < 0){
//		rubbishdate = 0
//	}
//	fmt.Println("报废日期",rubbishdate)
//	rubbish_reason := int64(dataBody["rubbish_reason"].(float64))
//	fmt.Println("报废原因",rubbish_reason)
//	user_year := dataBody["user_year"].(string)
//	fmt.Println("使用年限",user_year)
//	work_time := dataBody["work_time"].(string)
//	fmt.Println("工作时长",work_time)
//	treat_types := dataBody["treat_type"].([]interface{})
//	revers := int64(dataBody["revers_mode"].(float64))
//	fmt.Println("反渗模式",revers)
//	ids := make([]int64, 0)
//	for _, treat := range treat_types {
//		id := int64(treat.(float64))
//		ids = append(ids, id)
//	}
//	fmt.Println("治疗模式",treat_types)
//	addmacher := &models.DeviceAddmacher{
//		SerialNumber:        serial_numbe,
//		DeviceType:          device_type,
//		BedNumber:           number.Number,
//		BedId:bed_number,
//		ZoneId:number.ZoneID,
//		DeviceName:          device_name,
//		ManufactureFactory:  manufacture_factory,
//		ServiceManufacturer: service_manufacturer,
//		UnitType:            unit_type,
//		UseSection:          use_section,
//		SectionNumber:       section_number,
//		BuyDate:             buydate,
//		InstallDate:         installdate,
//		StartDate:           startdate,
//		MaintenaceEngineer:  maintenance_engineer,
//		Telephone:           telephone,
//		GuaranteeDate:       guarantee_date,
//		MachineStatus:       machine_status,
//		UserTotal:           user_total,
//		DisinfectionMode:    disinfection_mode,
//		Remarks:             remarks,
//		RubbishDate:         rubbishdate,
//		RubbishReason:       rubbish_reason,
//		UserYear:            user_year,
//		WorkTime:            work_time,
//		ReversMode:          revers,
//		Status:              1,
//		Ctime:               time.Now().Unix(),
//		UserOrgId:           orgid,
//	}
//	err = service.CreateMacher(addmacher)
//	fmt.Println("添加数据错误是什么",err)
//	if err !=nil{
//		this.ServeFailJsonSend(enums.ErrorCodeDataException, "添加设备失败")
//		return
//	}
//	deviceAddmacher, err := service.GetLastMacherData(orgid)
//	fmt.Println("错误是什么" ,err)
//	service.AddTreatMode(deviceAddmacher.ID,orgid,ids)
//	this.ServeSuccessJSON(map[string]interface{}{
//		"addmacher":addmacher,
//	})
//}

func (this *DeviceAPIController) GetAllMachineInfo() {

	page, _ := this.GetInt64("page")
	fmt.Println("page是什么", page)
	limit, _ := this.GetInt64("limit")
	fmt.Println("limit是什么", limit)
	searchKey := this.GetString("searchKey")
	fmt.Println("searcheKey", searchKey)
	zoneid, _ := this.GetInt64("zoneid")
	fmt.Println("区号id", zoneid)
	equipmentid, _ := this.GetInt64("equipmentid")
	fmt.Println("equipmentid", equipmentid)
	statusid, _ := this.GetInt64("statusid")
	fmt.Println("statusid", statusid)
	adminUserInfo := this.GetAdminUserInfo()
	orgid := adminUserInfo.CurrentOrgId
	addmahcer, total, err := service.GetAllMachineInfo(page, limit, searchKey, zoneid, equipmentid, statusid, orgid)

	if err != nil {
		this.ServeFailJsonSend(enums.ErrorCodeDataException, "查询设备失败")
		return
	}
	this.ServeSuccessJSON(map[string]interface{}{
		"addmahcer": addmahcer,
		"total":     total,
	})
}

func (this *DeviceAPIController) GetAllMachine() {
	adminUserInfo := this.GetAdminUserInfo()
	orgid := adminUserInfo.CurrentOrgId
	fmt.Println("机构id", orgid)
	zoneid, _ := this.GetInt64("zoneid")
	fmt.Println("zoneid", zoneid)
	//number, err := service.GetZoneId(zoneid, orgid)
	//classid, _ := this.GetInt64("classid")
	//fmt.Println("classid", classid)
	deviceid, _ := this.GetInt64("deviceid")
	fmt.Println("deviceid", deviceid)
	//now := time.Now()
	//var week = int(now.Weekday())
	//weeks := int64(week)
	//fmt.Println("星期几",weeks)
	timeStr := time.Now().Format("2006-01-02")
	timeLayout := "2006-01-02 15:04:05"
	fmt.Println("timeStr:", timeStr)
	timeStringToTime, err := utils.ParseTimeStringToTime(timeLayout, timeStr+" 00:00:00")
	timenow := timeStringToTime.Unix()
	fmt.Println("timenow是什么", timenow)
	fmt.Println("时间搓", timeStringToTime.Unix())
	addmahcer, err := service.GetAllMachine(zoneid, 0, deviceid, timenow, orgid)
	if err != nil {
		this.ServeFailJsonSend(enums.ErrorCodeDataException, "查询设备失败")
		return
	}
	this.ServeSuccessJSON(map[string]interface{}{
		"addmahcer": addmahcer,
	})
}

func (this *DeviceAPIController) GetMachineDetail() {
	id, _ := this.GetInt64("id")
	adminUserInfo := this.GetAdminUserInfo()
	orgid := adminUserInfo.CurrentOrgId
	fmt.Println("orgid", orgid)
	addmacher, err := service.GetMachineDetail(id, orgid)
	fmt.Print("err", err)
	warning, err := service.GetTimeWarning(id, orgid)
	germ, err := service.GetTimeLast(id, orgid)
	clean, err := service.GetTimeLastData(id, orgid)
	//zone, err := service.GetZoneName(addmacher.ZoneId, orgid)
	fmt.Println("报错小明", err)
	number, err := service.GetAllBedNumberTwo(orgid, id)
	mode, errr := service.GetTreatModel(id, orgid)
	fmt.Println("mode是什么", mode)
	fmt.Println("错误是什么", errr)
	if err != nil {
		this.ServeFailJsonSend(enums.ErrorCodeDataException, "查询单个失败")
		return
	}
	this.ServeSuccessJSON(map[string]interface{}{
		"addmacher": addmacher,
		"mode":      mode,
		"number":    number,
		"warning":   warning,
		"germ":      germ,
		"clean":     clean,
		//"zone":      zone,
	})
}

func (this *DeviceAPIController) GetAllMachineTwo() {
	adminUserInfo := this.GetAdminUserInfo()
	orgid := adminUserInfo.CurrentOrgId
	fmt.Println("机构id", orgid)
	zoneid, _ := this.GetInt64("zoneid")
	fmt.Println("zoneid", zoneid)
	//number, err := service.GetZoneId(zoneid, orgid)
	//classid, _ := this.GetInt64("classid")
	//fmt.Println("classid", classid)
	deviceid, _ := this.GetInt64("deviceid")
	fmt.Println("deviceid", deviceid)
	//now := time.Now()
	//var week = int(now.Weekday())
	//weeks := int64(week)
	//fmt.Println("星期几",weeks)
	timeStr := time.Now().Format("2006-01-02")
	timeLayout := "2006-01-02 15:04:05"
	fmt.Println("timeStr:", timeStr)
	timeStringToTime, err := utils.ParseTimeStringToTime(timeLayout, timeStr+" 00:00:00")
	timenow := timeStringToTime.Unix()
	fmt.Println("timenow是什么", timenow)
	fmt.Println("时间搓", timeStringToTime.Unix())
	addmahcer, err := service.GetAllMachine(zoneid, 0, deviceid, timenow, orgid)
	if err != nil {
		this.ServeFailJsonSend(enums.ErrorCodeDataException, "查询设备失败")
		return
	}
	this.ServeSuccessJSON(map[string]interface{}{
		"addmahcer": addmahcer,
	})
}
