Device.go 56 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174
  1. package controllers
  2. import (
  3. "Cold_Api/Nats/NatsServer"
  4. "Cold_Api/conf"
  5. "Cold_Api/controllers/lib"
  6. "Cold_Api/models/Account"
  7. "Cold_Api/models/Company"
  8. "Cold_Api/models/Device"
  9. "Cold_Api/models/System"
  10. "Cold_Api/models/Warning"
  11. "fmt"
  12. beego "github.com/beego/beego/v2/server/web"
  13. "github.com/xuri/excelize/v2"
  14. "math"
  15. "os"
  16. "strconv"
  17. "time"
  18. )
  19. // Handle
  20. type DeviceController struct {
  21. beego.Controller
  22. Admin_r *Account.Admin // 登陆的用户
  23. T_pid int // 公司id
  24. }
  25. func (c *DeviceController) Prepare() {
  26. GetCookie := c.Ctx.GetCookie("User_tokey")
  27. GetString := c.GetString("User_tokey")
  28. User_tokey := GetCookie
  29. if len(User_tokey) == 0 {
  30. User_tokey = GetString
  31. }
  32. c.Admin_r = Account.Admin_r
  33. T_pid := c.Admin_r.T_pid
  34. EntryPid, _ := Account.Redis_Tokey_T_pid_Get(User_tokey)
  35. if EntryPid > 0 {
  36. T_pid = EntryPid
  37. }
  38. c.T_pid = T_pid
  39. }
  40. // 设备 ------------------------------------------
  41. func (c *DeviceController) Device_List() {
  42. type R_JSONS struct {
  43. //必须的大写开头
  44. Device_lite []Device.Device_R
  45. Num int64
  46. Page int
  47. Page_size int
  48. }
  49. var r_jsons R_JSONS
  50. page, _ := c.GetInt("page")
  51. if page < 1 {
  52. page = 1
  53. }
  54. page_z, _ := c.GetInt("page_z")
  55. if page_z < 1 {
  56. page_z = conf.Page_size
  57. }
  58. Name := c.GetString("T_name")
  59. T_online := c.GetString("T_online")
  60. T_monitor := c.GetString("T_monitor")
  61. r_jsons.Device_lite, r_jsons.Num = Device.Read_Device_List(c.Admin_r, c.T_pid, Name, T_monitor, T_online, page, page_z)
  62. r_jsons.Page = page
  63. r_jsons.Page_size = int(math.Ceil(float64(r_jsons.Num) / float64(page_z)))
  64. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  65. c.ServeJSON()
  66. return
  67. }
  68. func (c *DeviceController) Device_Get() {
  69. var r_jsons lib.R_JSONS
  70. T_sn := c.GetString("T_sn")
  71. Device_r, err := Device.Read_Device_ByT_sn(T_sn)
  72. if err != nil {
  73. c.Data["json"] = lib.JSONS{Code: 202, Msg: "查询失败!"}
  74. c.ServeJSON()
  75. return
  76. }
  77. if Device_r.T_pid != c.T_pid {
  78. c.Data["json"] = lib.JSONS{Code: 202, Msg: "无权查看!"}
  79. c.ServeJSON()
  80. return
  81. }
  82. r_jsons.Data = Device.DeviceToDevice_R(Device_r)
  83. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  84. c.ServeJSON()
  85. return
  86. }
  87. func (c *DeviceController) Device_Add() {
  88. var err error
  89. T_sn := c.GetString("T_sn")
  90. var_ := Device.Device{
  91. T_pid: c.T_pid,
  92. T_sn: T_sn,
  93. T_monitor: 1, // 监控状态 已监控
  94. T_State: 1, // 状态 正常
  95. T_ist: 1, // 温度 1开启
  96. T_ish: 1, // 湿度 1开启
  97. }
  98. if len(T_sn) < 8 {
  99. c.Data["json"] = lib.JSONS{Code: 202, Msg: "SN 太短 必须8个字符以上"}
  100. c.ServeJSON()
  101. return
  102. }
  103. _, err = Device.Read_Device_ByT_sn(T_sn)
  104. if err == nil {
  105. c.Data["json"] = lib.JSONS{Code: 202, Msg: "重复SN!"}
  106. c.ServeJSON()
  107. return
  108. }
  109. var_.T_devName = T_sn
  110. // 创建数据库
  111. if !Device.CREATE_DeviceData(T_sn) {
  112. c.Data["json"] = lib.JSONS{Code: 302, Msg: "添加失败!"}
  113. c.ServeJSON()
  114. return
  115. }
  116. err = Device.Add_Device(var_)
  117. if err != nil {
  118. c.Data["json"] = lib.JSONS{Code: 301, Msg: "添加失败!"}
  119. c.ServeJSON()
  120. return
  121. }
  122. System.Add_UserLogs_T(c.Admin_r.T_uuid, "设备管理", "设备添加", var_)
  123. NatsServer.Read_DeviceParameter(T_sn) // 获取主机信息
  124. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  125. c.ServeJSON()
  126. return
  127. }
  128. func (c *DeviceController) Device_Edit() {
  129. T_SN := c.GetString("T_sn")
  130. Device_r, err := Device.Read_Device_ByT_sn(T_SN)
  131. if err != nil {
  132. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_sn Err!"}
  133. c.ServeJSON()
  134. return
  135. }
  136. clos := make([]string, 0)
  137. // 监控状态 0 未监控 1 监控
  138. T_monitor, T_monitor_err := c.GetInt("T_monitor")
  139. if T_monitor_err == nil {
  140. Device_r.T_monitor = T_monitor
  141. clos = append(clos, "T_monitor")
  142. }
  143. // 温度显示
  144. T_ist, T_ist_err := c.GetInt("T_ist")
  145. if T_ist_err == nil {
  146. Device_r.T_ist = T_ist
  147. clos = append(clos, "T_ist")
  148. }
  149. // 适度显示
  150. T_ish, T_ish_err := c.GetInt("T_ish")
  151. if T_ish_err == nil {
  152. Device_r.T_ish = T_ish
  153. clos = append(clos, "T_ish")
  154. }
  155. // 是否弃用
  156. T_State, T_State_err := c.GetInt("T_State")
  157. if T_State_err == nil {
  158. Device_r.T_State = T_State
  159. clos = append(clos, "T_State")
  160. }
  161. // 验证时间
  162. T_VerifyTime := c.GetString("T_VerifyTime")
  163. VerifyTime, VerifyTime_is := lib.TimeStrToTime(T_VerifyTime)
  164. if VerifyTime_is {
  165. Device_r.T_VerifyTime = VerifyTime
  166. clos = append(clos, "T_VerifyTime")
  167. }
  168. // 校准时间
  169. T_CalibrationTime := c.GetString("T_CalibrationTime")
  170. CalibrationTime, CalibrationTime_is := lib.TimeStrToTime(T_CalibrationTime)
  171. if CalibrationTime_is {
  172. Device_r.T_CalibrationTime = CalibrationTime
  173. clos = append(clos, "T_CalibrationTime")
  174. }
  175. // 巡检时间
  176. T_PatrolTime := c.GetString("T_PatrolTime")
  177. PatrolTime, PatrolTime_is := lib.TimeStrToTime(T_PatrolTime)
  178. if PatrolTime_is {
  179. Device_r.T_PatrolTime = PatrolTime
  180. clos = append(clos, "T_PatrolTime")
  181. }
  182. if is := Device.Update_Device(Device_r, clos...); !is {
  183. c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
  184. c.ServeJSON()
  185. return
  186. }
  187. System.Add_UserLogs_T(c.Admin_r.T_uuid, "设备管理", "修改", Device_r)
  188. if is := Device.Update_Device_To_DeviceSensor(Device_r); is {
  189. System.Add_UserLogs_T(c.Admin_r.T_uuid, "设备管理", "传感器修改", Device_r)
  190. }
  191. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  192. c.ServeJSON()
  193. return
  194. }
  195. // 重启/关机
  196. func (c *DeviceController) Device_RestartShutdown() {
  197. T_sn := c.GetString("T_sn")
  198. T_task := c.GetString("T_task")
  199. NatsServer.Set_RestartShutdown(Device.Device_task{
  200. T_sn: T_sn,
  201. T_task: T_task,
  202. })
  203. System.Add_UserLogs(c.Admin_r.T_uuid, "设备管理", "重启/关机", T_sn+"-"+T_task)
  204. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  205. c.ServeJSON()
  206. return
  207. }
  208. // 版本升级
  209. func (c *DeviceController) Device_ProductUpgrade() {
  210. T_sn := c.GetString("T_sn")
  211. T_version := c.GetString("T_version")
  212. T_file := c.GetString("T_file")
  213. NatsServer.Up_ProductUpgrade(T_sn, T_version, T_file)
  214. System.Add_UserLogs(c.Admin_r.T_uuid, "设备管理", "版本升级", T_sn+"-"+T_version+"-"+T_file)
  215. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  216. c.ServeJSON()
  217. return
  218. }
  219. // 2023-02-02 弃用
  220. //func (c *DeviceController) Device_Del() {
  221. // if admin_r.Id != 1 {
  222. // c.Data["json"] = lib.JSONS{Code: 202, Msg: "没有权限!"}
  223. // c.ServeJSON()
  224. // return
  225. // }
  226. //
  227. // T_sn := c.GetString("T_sn")
  228. //
  229. // Device_r, err := Device.Read_Device_ByT_sn(T_sn)
  230. // if err != nil {
  231. // c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_sn Err!"}
  232. // c.ServeJSON()
  233. // return
  234. // }
  235. //
  236. // Device.Delete_Device(Device_r)
  237. // DeviceSensor_list, _ := Device.Read_DeviceSensor_ByTsn(Device_r.T_sn)
  238. // for _, v := range DeviceSensor_list {
  239. // Device.Delete_DeviceSensor_ById(Device_r.T_sn, v.T_id)
  240. // }
  241. // Device.DELETE_DeviceSensor(Device_r.T_sn)
  242. // Device.DELETE_DeviceDatar(Device_r.T_sn)
  243. // Device.DELETE_DeviceParameter(Device_r.T_sn)
  244. // Device.DELETE_DeviceSensorParameter(Device_r.T_sn)
  245. //
  246. // System.Add_UserLogs(admin_r.T_uuid, "设备管理", "设备删除", T_sn)
  247. // c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  248. // c.ServeJSON()
  249. // return
  250. //
  251. //}
  252. // 设备日志
  253. func (c *DeviceController) DeviceLogs() {
  254. type R_JSONS struct {
  255. //必须的大写开头
  256. DeviceLogs []Warning.DeviceLogs
  257. Num int64
  258. Page int
  259. Page_size int
  260. }
  261. var r_jsons R_JSONS
  262. page, _ := c.GetInt("page")
  263. if page < 1 {
  264. page = 1
  265. }
  266. page_z, _ := c.GetInt("page_z")
  267. if page_z < 1 {
  268. page_z = conf.Page_size
  269. }
  270. T_sn := c.GetString("T_sn")
  271. c.Data["T_sn"] = T_sn
  272. r_jsons.DeviceLogs, r_jsons.Num = Warning.Read_DeviceLogs_List(T_sn, page, page_z)
  273. r_jsons.Page = page
  274. r_jsons.Page_size = int(math.Ceil(float64(r_jsons.Num) / float64(page_z)))
  275. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  276. c.ServeJSON()
  277. }
  278. // 设备参数 ------------------------------------------
  279. // 设备参数列表
  280. func (c *DeviceController) Device_Parameter_List() {
  281. Sn := c.GetString("T_sn")
  282. page, _ := c.GetInt("page")
  283. if page < 1 {
  284. page = 1
  285. }
  286. page_z, _ := c.GetInt("page_z")
  287. if page_z < 1 {
  288. page_z = conf.Page_size
  289. }
  290. DeviceParameter_lite := Device.Read_DeviceParameter_SN_List(Sn, page, page_z)
  291. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: DeviceParameter_lite}
  292. c.ServeJSON()
  293. return
  294. }
  295. // 获取设备参数
  296. func (c *DeviceController) Device_Parameter_Get() {
  297. Sn := c.GetString("T_sn")
  298. DeviceParameter_lite := Device.Read_DeviceParameter_SN(Sn)
  299. if len(DeviceParameter_lite) == 0 {
  300. NatsServer.Read_DeviceParameter(Sn)
  301. c.Data["json"] = lib.JSONS{Code: 202, Msg: "未同步参数,请检查设备是否正常!"}
  302. c.ServeJSON()
  303. return
  304. }
  305. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: DeviceParameter_lite}
  306. c.ServeJSON()
  307. return
  308. }
  309. // 修改设备参数
  310. func (c *DeviceController) Device_Parameter_Pu() {
  311. //T_SN := c.GetString("T_sn")
  312. //T_name := c.GetString("T_name")
  313. //
  314. //T_saveT, _ := c.GetInt("T_saveT")
  315. //T_overA, _ := c.GetInt("T_overA")
  316. //T_outA, _ := c.GetInt("T_outA")
  317. //T_lostA, _ := c.GetInt("T_lostA")
  318. //T_bat, _ := c.GetInt("T_bat")
  319. //
  320. //T_warn, _ := c.GetInt("T_warn")
  321. //T_warnD, _ := c.GetInt("T_warnD")
  322. //
  323. //T_btname := c.GetString("T_btname")
  324. //T_btsid, _ := c.GetInt("T_btsid")
  325. //T_btchar, _ := c.GetInt("T_btchar")
  326. //
  327. //T_Msid, _ := c.GetInt("T_Msid")
  328. //T_State, _ := c.GetInt("T_State")
  329. //
  330. //Device_r, err := Device.Read_Device_ByT_sn(T_SN)
  331. //if err != nil {
  332. // c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_sn Err!"}
  333. // c.ServeJSON()
  334. // return
  335. //}
  336. //
  337. //Deviceparameter := Device.DeviceParameter{
  338. // T_sn: T_SN,
  339. // T_name: T_name,
  340. // T_saveT: T_saveT,
  341. // T_overA: T_overA,
  342. // T_outA: T_outA,
  343. // T_lostA: T_lostA,
  344. // T_bat: T_bat,
  345. // T_warn: T_warn,
  346. // T_warnD: T_warnD,
  347. // T_btname: T_btname,
  348. // T_btsid: T_btsid,
  349. // T_btchar: T_btchar,
  350. // T_Msid: int64(T_Msid),
  351. // T_uuid: c.Admin_r.T_uuid,
  352. // T_SendState: 0,
  353. // T_State: T_State,
  354. //}
  355. //Deviceparameter, is := Device.Add_DeviceParameter(Deviceparameter)
  356. //if !is {
  357. // c.Data["json"] = lib.JSONS{Code: 202, Msg: "Add_DeviceParameter ERR"}
  358. // c.ServeJSON()
  359. // return
  360. //}
  361. //System.Add_UserLogs_T(c.Admin_r.T_uuid, "设备管理", "设备参数操作", Deviceparameter)
  362. //NatsServer.Pu_DeviceParameter(Deviceparameter)
  363. //
  364. //// 更新名称
  365. //Device_r.T_devName = Deviceparameter.T_name
  366. //Device.Update_Device(Device_r, "T_devName")
  367. //System.Add_UserLogs_T(c.Admin_r.T_uuid, "设备管理", "修改", Device_r)
  368. T_SN := c.GetString("T_sn")
  369. Device_r, err := Device.Read_Device_ByT_sn(T_SN)
  370. if err != nil {
  371. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_sn Err!"}
  372. c.ServeJSON()
  373. return
  374. }
  375. DeviceParameter_lite := Device.Read_DeviceParameter_SN(T_SN)
  376. if len(DeviceParameter_lite) == 0 {
  377. c.Data["json"] = lib.JSONS{Code: 202, Msg: "未同步参数,请检查设备是否正常!"}
  378. c.ServeJSON()
  379. return
  380. }
  381. DeviceParameter := DeviceParameter_lite[0]
  382. if v, err := c.GetInt("T_saveT"); err == nil {
  383. DeviceParameter.T_saveT = v
  384. }
  385. if v, err := c.GetInt("T_overA"); err == nil {
  386. DeviceParameter.T_overA = v
  387. }
  388. if v, err := c.GetInt("T_outA"); err == nil {
  389. DeviceParameter.T_outA = v
  390. }
  391. if v, err := c.GetInt("T_lostA"); err == nil {
  392. DeviceParameter.T_lostA = v
  393. }
  394. if v, err := c.GetInt("T_bat"); err == nil {
  395. DeviceParameter.T_bat = v
  396. }
  397. if v, err := c.GetInt("T_warn"); err == nil {
  398. DeviceParameter.T_warn = v
  399. }
  400. if v, err := c.GetInt("T_warnD"); err == nil {
  401. DeviceParameter.T_warnD = v
  402. }
  403. if v, err := c.GetInt("T_speed"); err == nil {
  404. DeviceParameter.T_speed = v
  405. }
  406. if v, err := c.GetInt("T_dormancy"); err == nil {
  407. DeviceParameter.T_dormancy = v
  408. }
  409. if v := c.GetString("T_btname"); len(v) > 0 {
  410. DeviceParameter.T_btname = v
  411. }
  412. if v, err := c.GetInt("T_btsid"); err == nil {
  413. DeviceParameter.T_btsid = v
  414. }
  415. if v, err := c.GetInt("T_btchar"); err == nil {
  416. DeviceParameter.T_btchar = v
  417. }
  418. if v, err := c.GetInt("T_Msid"); err == nil {
  419. DeviceParameter.T_Msid = int64(v)
  420. }
  421. if v := c.GetString("T_name"); len(v) > 0 {
  422. DeviceParameter.T_name = v
  423. }
  424. DeviceParameter.Id = 0
  425. DeviceParameter.T_State = 2
  426. DeviceParameter.T_uuid = c.Admin_r.T_uuid
  427. DeviceParameter.T_SendState = 0
  428. Deviceparameter, is := Device.Add_DeviceParameter(DeviceParameter)
  429. if !is {
  430. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Add_DeviceParameter ERR"}
  431. c.ServeJSON()
  432. return
  433. }
  434. System.Add_UserLogs_T(c.Admin_r.T_uuid, "设备管理", "设备参数操作", Deviceparameter)
  435. NatsServer.Pu_DeviceParameter(Deviceparameter)
  436. if v := c.GetString("T_name"); len(v) > 0 {
  437. // 更新名称
  438. Device_r.T_devName = Deviceparameter.T_name
  439. Device.Update_Device(Device_r, "T_devName")
  440. System.Add_UserLogs_T(c.Admin_r.T_uuid, "设备管理", "修改设备名称", Device_r)
  441. }
  442. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  443. c.ServeJSON()
  444. return
  445. }
  446. // 删除设备 传感器
  447. // 2023-02-02 弃用
  448. func (c *DeviceController) Device_Parameter_Del_Device() {
  449. Sn := c.GetString("Sn")
  450. Id, _ := c.GetInt("Id")
  451. System.Add_UserLogs_T(c.Admin_r.T_uuid, "设备管理", "传感器 删除操作", "SN:"+Sn+" ["+strconv.Itoa(Id)+"]")
  452. //c.Data["Device_lite"] = Device.Read_DeviceParameter_SN(Sn)
  453. Device.Delete_DeviceSensor_ById(Sn, Id)
  454. NatsServer.Del_DeviceSensor(Device.DeviceSensor_Del{
  455. T_sn: Sn, T_id: Id,
  456. })
  457. c.Data["json"] = lib.JSONS{Code: 200, Msg: "OK"}
  458. c.ServeJSON()
  459. return
  460. }
  461. // 设备-传感器 ------------------------------------------
  462. // 传感器列表
  463. func (c *DeviceController) DeviceSensor_List() {
  464. type R_JSONS struct {
  465. //必须的大写开头
  466. Data []Device.DeviceSensor_R
  467. Num int64
  468. Page int
  469. Page_size int
  470. }
  471. var r_jsons R_JSONS
  472. page, _ := c.GetInt("page")
  473. if page < 1 {
  474. page = 1
  475. }
  476. page_z, _ := c.GetInt("page_z")
  477. if page_z < 1 {
  478. page_z = conf.Page_size
  479. }
  480. T_sn := c.GetString("T_sn")
  481. T_name := c.GetString("T_name") // 包含 T_name、T_sn
  482. T_class_id, _ := c.GetInt("T_calssid")
  483. T_type := c.GetString("T_type")
  484. T_State, T_State_err := c.GetInt("T_state")
  485. if T_State_err != nil {
  486. T_State = -1
  487. }
  488. T_datashow, T_datashow_err := c.GetInt("T_datashow") //0 屏蔽数据展示 1 正常数据展示
  489. if T_datashow_err != nil {
  490. T_datashow = -1
  491. }
  492. if T_class_id > 0 {
  493. R_DeviceClass, err := Company.Read_CompanyClass_ById(T_class_id)
  494. if err != nil {
  495. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_class_id Err!"}
  496. c.ServeJSON()
  497. return
  498. }
  499. if R_DeviceClass.T_pid != c.T_pid {
  500. c.Data["json"] = lib.JSONS{Code: 202, Msg: "R_DeviceClass.T_pid != T_pid Err!"}
  501. c.ServeJSON()
  502. return
  503. }
  504. }
  505. r_jsons.Data, r_jsons.Num = Device.Read_DeviceSensorList(c.Admin_r, c.T_pid, T_sn, T_name, T_class_id, T_datashow, T_type, T_State, page, page_z)
  506. r_jsons.Page = page
  507. r_jsons.Page_size = int(math.Ceil(float64(r_jsons.Num) / float64(page_z)))
  508. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  509. c.ServeJSON()
  510. return
  511. }
  512. // 修改传感器
  513. func (c *DeviceController) DeviceSensor_Edit() {
  514. Sn := c.GetString("T_sn")
  515. Id, _ := c.GetInt("T_id")
  516. DeviceSensor, is := Device.Read_DeviceSensor_ByT_sn(Sn, Id)
  517. if !is {
  518. c.Data["json"] = lib.JSONS{Code: 202, Msg: "信息错误!"}
  519. c.ServeJSON()
  520. return
  521. }
  522. // 数据视图3D视图订阅
  523. if v, err := c.GetInt("T_type"); err == nil {
  524. if v == 0 {
  525. c.Data["json"] = lib.JSONS{Code: 202, Msg: "类型错误!"}
  526. c.ServeJSON()
  527. return
  528. }
  529. DeviceSensor.T_type = v
  530. Device.Update_DeviceSensor(DeviceSensor, "T_type")
  531. System.Add_UserLogs_T(c.Admin_r.T_uuid, "设备管理", "传感器 类型", "SN:"+Sn+" ["+strconv.Itoa(Id)+"]"+strconv.Itoa(v))
  532. }
  533. // 实时数据显示排序
  534. if v, err := c.GetInt("T_sort"); err == nil {
  535. DeviceSensor.T_sort = v
  536. Device.Update_DeviceSensor(DeviceSensor, "T_sort")
  537. System.Add_UserLogs_T(c.Admin_r.T_uuid, "设备管理", "传感器 排序操作", "SN:"+Sn+" ["+strconv.Itoa(Id)+"]"+strconv.Itoa(v))
  538. }
  539. // 屏蔽数据展示
  540. if v, err := c.GetInt("T_datashow"); err == nil {
  541. DeviceSensor.T_datashow = v
  542. Device.Update_DeviceSensor(DeviceSensor, "T_datashow")
  543. System.Add_UserLogs_T(c.Admin_r.T_uuid, "设备管理", "传感器 数据展示", "SN:"+Sn+" ["+strconv.Itoa(Id)+"]"+strconv.Itoa(v))
  544. }
  545. // 数据视图3D视图订阅
  546. if v := c.GetString("T_3dview"); len(v) > 0 {
  547. DeviceSensor.T_3dview = v
  548. Device.Update_DeviceSensor(DeviceSensor, "T_3dview")
  549. System.Add_UserLogs_T(c.Admin_r.T_uuid, "设备管理", "传感器 3D视图订阅", "SN:"+Sn+" ["+strconv.Itoa(Id)+"]"+v)
  550. }
  551. c.Data["json"] = lib.JSONS{Code: 200, Msg: "OK"}
  552. c.ServeJSON()
  553. return
  554. }
  555. // 删除传感器
  556. func (c *DeviceController) DeviceSensor_Del() {
  557. Sn := c.GetString("T_sn")
  558. Id, _ := c.GetInt("T_id")
  559. _, is := Device.Read_DeviceSensor_ByT_sn(Sn, Id)
  560. if !is {
  561. c.Data["json"] = lib.JSONS{Code: 202, Msg: "信息错误!"}
  562. c.ServeJSON()
  563. return
  564. }
  565. // 0默认:从数据库删除 1:从设备删除
  566. T_mode, _ := c.GetInt("T_mode")
  567. if T_mode == 1 {
  568. Device.Delete_DeviceSensor_ById(Sn, Id)
  569. NatsServer.Del_DeviceSensor(Device.DeviceSensor_Del{
  570. T_sn: Sn, T_id: Id,
  571. })
  572. System.Add_UserLogs_T(c.Admin_r.T_uuid, "设备管理", "传感器 删除操作", "SN:"+Sn+" ["+strconv.Itoa(Id)+"]")
  573. } else {
  574. Device.Delete_DeviceSensor_ById(Sn, Id)
  575. System.Add_UserLogs_T(c.Admin_r.T_uuid, "设备管理", "传感器 删除操作", "SN:"+Sn+" ["+strconv.Itoa(Id)+"]")
  576. }
  577. c.Data["json"] = lib.JSONS{Code: 200, Msg: "OK"}
  578. c.ServeJSON()
  579. return
  580. }
  581. // 传感器参数
  582. func (c *DeviceController) DeviceSensor_Parameter_Get() {
  583. Sn := c.GetString("T_sn")
  584. Id, _ := c.GetInt("T_id")
  585. //c.Data["DeviceSensor"], _ = Device.Read_DeviceSensor_ByTsn_Tid(Sn, Id)
  586. DeviceSensorParameter_lite := Device.Read_DeviceSensorParameter_T_sn_T_id(Sn, Id)
  587. if len(DeviceSensorParameter_lite) == 0 {
  588. NatsServer.Read_DeviceSensorParameter(Sn)
  589. c.Data["json"] = lib.JSONS{Code: 202, Msg: "未同步参数,请检查设备是否正常!"}
  590. c.ServeJSON()
  591. return
  592. }
  593. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: DeviceSensorParameter_lite}
  594. c.ServeJSON()
  595. return
  596. }
  597. // 传感器参数列表
  598. func (c *DeviceController) DeviceSensor_Parameter_List() {
  599. Sn := c.GetString("T_sn")
  600. Id, _ := c.GetInt("T_id")
  601. page, _ := c.GetInt("page")
  602. if page < 1 {
  603. page = 1
  604. }
  605. page_z, _ := c.GetInt("page_z")
  606. if page_z < 1 {
  607. page_z = conf.Page_size
  608. }
  609. DeviceSensorParameter_lite := Device.Read_DeviceSensorParameter_List(Sn, Id, 2, page, page_z)
  610. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: DeviceSensorParameter_lite}
  611. c.ServeJSON()
  612. return
  613. }
  614. // 修改传感器参数
  615. func (c *DeviceController) DeviceSensor_Parameter_Pu() {
  616. T_SN := c.GetString("T_sn")
  617. T_id, _ := c.GetInt("T_id")
  618. _, err := Device.Read_Device_ByT_sn(T_SN)
  619. if err != nil {
  620. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_sn Err!"}
  621. c.ServeJSON()
  622. return
  623. }
  624. DeviceSensor, is := Device.Read_DeviceSensor_ByT_sn(T_SN, T_id)
  625. if !is {
  626. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_sn T_id Err!"}
  627. c.ServeJSON()
  628. return
  629. }
  630. DeviceSensorParameter, is := Device.Read_DeviceSensorParameter(T_SN, T_id)
  631. if !is {
  632. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_sn T_id Err!"}
  633. c.ServeJSON()
  634. return
  635. }
  636. T_name := DeviceSensor.T_name
  637. if v := c.GetString("T_name"); len(v) > 0 {
  638. T_name = v
  639. }
  640. T_Tlower := DeviceSensorParameter.T_Tlower
  641. if v, T_Tlower_err := c.GetFloat("T_Tlower"); T_Tlower_err == nil {
  642. T_Tlower = float32(v)
  643. }
  644. T_Tupper := DeviceSensorParameter.T_Tupper
  645. if v, T_Tupper_err := c.GetFloat("T_Tupper"); T_Tupper_err == nil {
  646. T_Tupper = float32(v)
  647. }
  648. T_RHlower := DeviceSensorParameter.T_RHlower
  649. if v, T_RHlower_err := c.GetFloat("T_RHlower"); T_RHlower_err == nil {
  650. T_RHlower = float32(v)
  651. }
  652. T_RHupper := DeviceSensorParameter.T_RHupper
  653. if v, T_RHupper_err := c.GetFloat("T_RHupper"); T_RHupper_err == nil {
  654. T_RHupper = float32(v)
  655. }
  656. T_enprel := DeviceSensorParameter.T_enprel
  657. if v, T_enprel_err := c.GetInt("T_enprel"); T_enprel_err == nil {
  658. T_enprel = v
  659. }
  660. T_tprel := DeviceSensorParameter.T_tprel
  661. if v, T_tprel_err := c.GetFloat("T_tprel"); T_tprel_err == nil {
  662. T_tprel = float32(v)
  663. }
  664. T_tpreu := DeviceSensorParameter.T_tpreu
  665. if v, T_tpreu_err := c.GetFloat("T_tpreu"); T_tpreu_err == nil {
  666. T_tpreu = float32(v)
  667. }
  668. T_hprel := DeviceSensorParameter.T_hprel
  669. if v, T_hprel_err := c.GetFloat("T_hprel"); T_hprel_err == nil {
  670. T_hprel = float32(v)
  671. }
  672. T_hpreu := DeviceSensorParameter.T_hpreu
  673. if v, T_hpreu_err := c.GetFloat("T_hpreu"); T_hpreu_err == nil {
  674. T_hpreu = float32(v)
  675. }
  676. T_speed := DeviceSensorParameter.T_speed
  677. if v, T_speed_err := c.GetInt("T_speed"); T_speed_err == nil {
  678. T_speed = v
  679. }
  680. T_en := DeviceSensorParameter.T_en
  681. if v, T_en_err := c.GetInt("T_en"); T_en_err == nil {
  682. T_en = v
  683. }
  684. T_free := DeviceSensorParameter.T_free
  685. if v, T_free_err := c.GetInt("T_free"); T_free_err == nil {
  686. T_free = v
  687. }
  688. dsp := Device.DeviceSensorParameter{
  689. T_sn: T_SN,
  690. T_id: T_id,
  691. T_name: T_name,
  692. T_Tlower: T_Tlower,
  693. T_Tupper: T_Tupper,
  694. T_RHlower: T_RHlower,
  695. T_RHupper: T_RHupper,
  696. T_speed: T_speed,
  697. T_en: T_en,
  698. T_free: T_free,
  699. T_enprel: T_enprel,
  700. T_tprel: T_tprel,
  701. T_tpreu: T_tpreu,
  702. T_hprel: T_hprel,
  703. T_hpreu: T_hpreu,
  704. T_uuid: c.Admin_r.T_uuid,
  705. T_SendState: 0,
  706. T_State: 2, // 用户提交
  707. }
  708. dsp, is = Device.Add_DeviceSensorParameter(dsp)
  709. if !is {
  710. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Add_DeviceSensorParameter Err!"}
  711. c.ServeJSON()
  712. return
  713. }
  714. System.Add_UserLogs_T(c.Admin_r.T_uuid, "设备管理", "传感器参数操作", dsp)
  715. // 更新名称
  716. if len(T_name) > 0 {
  717. DeviceSensor.T_name = T_name
  718. if is = Device.Update_DeviceSensor(DeviceSensor, "T_name"); !is {
  719. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Update_DeviceSensor Err!"}
  720. c.ServeJSON()
  721. return
  722. }
  723. System.Add_UserLogs_T(c.Admin_r.T_uuid, "设备管理", "修改传感器名称", DeviceSensor)
  724. }
  725. NatsServer.Pu_DeviceParameter_Sensor(dsp)
  726. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  727. c.ServeJSON()
  728. return
  729. }
  730. // 传感器管理列表
  731. func (c *DeviceController) DeviceSensor_Manage_List() {
  732. type R_JSONS struct {
  733. //必须的大写开头
  734. Data []Device.DeviceSensor_P
  735. Num int64
  736. Page int
  737. Page_size int
  738. }
  739. var r_jsons R_JSONS
  740. page, _ := c.GetInt("page")
  741. if page < 1 {
  742. page = 1
  743. }
  744. page_z, _ := c.GetInt("page_z")
  745. if page_z < 1 {
  746. page_z = conf.Page_size
  747. }
  748. T_name := c.GetString("T_name") // 包含 T_name、T_sn
  749. T_calss_id, _ := c.GetInt("T_calssid")
  750. if T_calss_id > 0 {
  751. R_DeviceClass, err := Company.Read_CompanyClass_ById(T_calss_id)
  752. if err != nil {
  753. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_class_id Err!"}
  754. c.ServeJSON()
  755. return
  756. }
  757. if R_DeviceClass.T_pid != c.T_pid {
  758. c.Data["json"] = lib.JSONS{Code: 202, Msg: "CompanyClass.T_pid != T_pid Err!"}
  759. c.ServeJSON()
  760. return
  761. }
  762. }
  763. T_en, T_en_err := c.GetInt("T_en") //启用停用 0 停用 1 启用 空 所有
  764. if T_en_err != nil {
  765. T_en = -1
  766. }
  767. T_free, T_free_err := c.GetInt("T_free") // 空库 0 正常 1 空库 空 所有
  768. if T_free_err != nil {
  769. T_free = -1
  770. }
  771. T_datashow, T_datashow_err := c.GetInt("T_datashow") //数据展示 空 全部 0 屏蔽数据展示 1 正常数据展示
  772. if T_datashow_err != nil {
  773. T_datashow = -1
  774. }
  775. T_sort, T_sort_err := c.GetInt("T_sort") //排序 空 升序 1 降序
  776. if T_sort_err != nil {
  777. T_sort = -1
  778. }
  779. r_jsons.Data, r_jsons.Num = Device.Read_DeviceSensorManageList(c.Admin_r, c.T_pid, T_name, T_calss_id, T_en, T_free, T_datashow, T_sort, page, page_z)
  780. r_jsons.Page = page
  781. r_jsons.Page_size = int(math.Ceil(float64(r_jsons.Num) / float64(page_z)))
  782. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  783. c.ServeJSON()
  784. return
  785. }
  786. // 设备任务 ------------------------------------------
  787. // 任务列表
  788. func (c *DeviceController) DeviceTask_List() {
  789. type R_JSONS struct {
  790. //必须的大写开头
  791. Data []Device.DeviceTask
  792. Num int64
  793. Page int
  794. Page_size int
  795. }
  796. var r_jsons R_JSONS
  797. page, _ := c.GetInt("page")
  798. if page < 1 {
  799. page = 1
  800. }
  801. page_z, _ := c.GetInt("page_z")
  802. if page_z < 1 {
  803. page_z = conf.Page_size
  804. }
  805. T_sn := c.GetString("T_sn")
  806. Time_start := c.GetString("Time_start")
  807. Time_end := c.GetString("Time_end")
  808. if len(T_sn) < 6 {
  809. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_sn!!!"}
  810. c.ServeJSON()
  811. return
  812. }
  813. r_jsons.Data, r_jsons.Num = Device.Read_DeviceTask_List(T_sn, Time_start, Time_end, page, page_z)
  814. r_jsons.Page = page
  815. r_jsons.Page_size = int(math.Ceil(float64(r_jsons.Num) / float64(page_z)))
  816. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  817. c.ServeJSON()
  818. return
  819. }
  820. func (c *DeviceController) DeviceTask_All() {
  821. var r_jsons lib.R_JSONS
  822. T_sn := c.GetString("T_sn")
  823. if len(T_sn) < 6 {
  824. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_sn!!!"}
  825. c.ServeJSON()
  826. return
  827. }
  828. r_jsons.Data, r_jsons.Num = Device.Read_DeviceTask_All(T_sn)
  829. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  830. c.ServeJSON()
  831. return
  832. }
  833. // 任务启停
  834. func (c *DeviceController) DeviceTask_Post() {
  835. T_sn := c.GetString("T_sn")
  836. T_task := c.GetString("T_task")
  837. NatsServer.Set_DeviceTask(Device.Device_task{
  838. T_sn: T_sn,
  839. T_task: T_task,
  840. })
  841. System.Add_UserLogs(c.Admin_r.T_uuid, "设备管理", "远程启停", T_sn+"-"+T_task)
  842. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  843. c.ServeJSON()
  844. return
  845. }
  846. // 设备告警 ------------------------------------------
  847. // 告警列表
  848. func (c *DeviceController) DeviceWarning_List() {
  849. type R_JSONS struct {
  850. //必须的大写开头
  851. Data []Warning.Warning_R
  852. Num int64
  853. Page int
  854. Page_size int
  855. }
  856. var r_jsons R_JSONS
  857. page, _ := c.GetInt("page")
  858. if page < 1 {
  859. page = 1
  860. }
  861. page_z, _ := c.GetInt("page_z")
  862. if page_z < 1 {
  863. page_z = conf.Page_size
  864. }
  865. T_name := c.GetString("T_name")
  866. T_tp := c.GetString("T_tp")
  867. Time_start := c.GetString("Time_start")
  868. Time_end := c.GetString("Time_end")
  869. T_handle, _ := c.GetInt("T_handle")
  870. T_admin, _ := c.GetInt("T_admin")
  871. T_history, _ := c.GetInt("T_history")
  872. var T_year, T_month string
  873. if T_history == 1 {
  874. date, err := time.Parse("2006-01-02 15:04:05", Time_start)
  875. if err != nil {
  876. c.Data["json"] = lib.JSONS{Code: 202, Msg: "时间格式错误"}
  877. c.ServeJSON()
  878. return
  879. }
  880. T_year, T_month = date.Format("2006"), date.Format("01")
  881. }
  882. if T_admin == 1 {
  883. if T_history == 1 {
  884. // 获取备份
  885. r_jsons.Data, r_jsons.Num = Warning.Read_Admin_Warning_Backups(c.Admin_r.T_pids, T_year, T_month, T_tp, T_name, T_handle, Time_start, Time_end, page, page_z)
  886. } else {
  887. // 获取最新
  888. r_jsons.Data, r_jsons.Num = Warning.Read_Admin_Warning_List(c.Admin_r.T_pids, T_tp, T_name, T_handle, Time_start, Time_end, page, page_z)
  889. }
  890. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  891. c.ServeJSON()
  892. return
  893. }
  894. if T_history == 1 {
  895. // 获取备份
  896. r_jsons.Data, r_jsons.Num = Warning.Read_Warning_Backups(c.T_pid, T_year, T_month, T_tp, T_name, T_handle, Time_start, Time_end, page, page_z)
  897. } else {
  898. // 获取最新
  899. r_jsons.Data, r_jsons.Num = Warning.Read_Warning_List(c.T_pid, T_tp, T_name, T_handle, Time_start, Time_end, page, page_z)
  900. }
  901. r_jsons.Page = page
  902. r_jsons.Page_size = int(math.Ceil(float64(r_jsons.Num) / float64(page_z)))
  903. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  904. c.ServeJSON()
  905. return
  906. }
  907. // 查询告警
  908. func (c *DeviceController) DeviceWarning_Get() {
  909. id, _ := c.GetInt("T_id")
  910. T_history, _ := c.GetInt("T_history")
  911. T := Warning.Read_Warning_ById(int64(id))
  912. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Warning.WarningToWarning_R(T_history, T)}
  913. c.ServeJSON()
  914. return
  915. }
  916. // 编辑告警(处理告警)
  917. func (c *DeviceController) DeviceWarning_Post() {
  918. id, _ := c.GetInt("T_id")
  919. T_Text := c.GetString("T_Text")
  920. T_time := c.GetString("T_time")
  921. T_history, _ := c.GetInt("T_history")
  922. var T_year, T_month string
  923. var warning Warning.Warning
  924. Wtab := "warning"
  925. if T_history == 1 {
  926. date, err := time.Parse("2006-01-02 15:04:05", T_time)
  927. if err != nil {
  928. c.Data["json"] = lib.JSONS{Code: 202, Msg: "时间格式错误"}
  929. c.ServeJSON()
  930. return
  931. }
  932. T_year, T_month = date.Format("2006"), date.Format("01")
  933. Wtab += "_" + T_year + "_" + T_month
  934. warning, err = Warning.Read_Warning_ById_Backups(id, T_year, T_month)
  935. if err != nil {
  936. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_id Err!"}
  937. c.ServeJSON()
  938. return
  939. }
  940. warning.T_Text = T_Text
  941. warning.T_State = 2
  942. if is := Warning.Update_Warning_Backups(warning, T_year, T_month); !is {
  943. c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
  944. c.ServeJSON()
  945. return
  946. }
  947. } else {
  948. warning = Warning.Read_Warning_ById(int64(id))
  949. if warning.Id == 0 {
  950. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_id Err!"}
  951. c.ServeJSON()
  952. return
  953. }
  954. warning.T_Text = T_Text
  955. warning.T_State = 2
  956. if is := Warning.Update_Warning(warning, "T_Text", "T_State"); !is {
  957. c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
  958. c.ServeJSON()
  959. return
  960. }
  961. }
  962. System.Add_UserLogs(c.Admin_r.T_uuid, "设备管理", "报警处理操作", Wtab+":"+strconv.Itoa(id)+"->"+T_Text)
  963. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  964. c.ServeJSON()
  965. return
  966. }
  967. // 删除告警
  968. func (c *DeviceController) DeviceWarning_Del() {
  969. id, _ := c.GetInt("T_id")
  970. T_time := c.GetString("T_time")
  971. T_history, _ := c.GetInt("T_history")
  972. var T_year, T_month string
  973. var warning Warning.Warning
  974. Wtab := "warning"
  975. if T_history == 1 {
  976. date, err := time.Parse("2006-01-02 15:04:05", T_time)
  977. if err != nil {
  978. c.Data["json"] = lib.JSONS{Code: 202, Msg: "时间格式错误"}
  979. c.ServeJSON()
  980. return
  981. }
  982. T_year, T_month = date.Format("2006"), date.Format("01")
  983. Wtab += "_" + T_year + "_" + T_month
  984. warning, err = Warning.Read_Warning_ById_Backups(id, T_year, T_month)
  985. if err != nil {
  986. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_id Err!"}
  987. c.ServeJSON()
  988. return
  989. }
  990. warning.T_State = 0
  991. if is := Warning.Update_Warning_Backups(warning, T_year, T_month); !is {
  992. c.Data["json"] = lib.JSONS{Code: 202, Msg: "删除失败!"}
  993. c.ServeJSON()
  994. return
  995. }
  996. } else {
  997. warning = Warning.Read_Warning_ById(int64(id))
  998. if warning.Id == 0 {
  999. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_id Err!"}
  1000. c.ServeJSON()
  1001. return
  1002. }
  1003. warning.T_State = 0
  1004. if is := Warning.Update_Warning(warning, "T_Text", "T_State"); !is {
  1005. c.Data["json"] = lib.JSONS{Code: 202, Msg: "删除失败!"}
  1006. c.ServeJSON()
  1007. return
  1008. }
  1009. }
  1010. System.Add_UserLogs(c.Admin_r.T_uuid, "设备管理", "报警删除操作", Wtab+":"+strconv.Itoa(id))
  1011. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1012. c.ServeJSON()
  1013. return
  1014. }
  1015. // 导出告警
  1016. func (c *DeviceController) DeviceWarning_Data_Excel() {
  1017. T_name := c.GetString("T_name")
  1018. T_tp := c.GetString("T_tp")
  1019. Time_start := c.GetString("Time_start")
  1020. Time_end := c.GetString("Time_end")
  1021. T_handle, _ := c.GetInt("T_handle")
  1022. T_history, _ := c.GetInt("T_history")
  1023. var T_year, T_month string
  1024. if T_history == 1 {
  1025. date, err := time.Parse("2006-01-02 15:04:05", Time_start)
  1026. if err != nil {
  1027. c.Data["json"] = lib.JSONS{Code: 202, Msg: "时间格式错误"}
  1028. c.ServeJSON()
  1029. return
  1030. }
  1031. T_year, T_month = date.Format("2006"), date.Format("01")
  1032. }
  1033. var Device_data []Warning.Warning_R
  1034. if T_history == 1 {
  1035. // 获取备份
  1036. Device_data, _ = Warning.Read_Warning_Backups(c.T_pid, T_year, T_month, T_tp, T_name, T_handle, Time_start, Time_end, 0, 9999)
  1037. } else {
  1038. // 获取最新
  1039. Device_data, _ = Warning.Read_Warning_List(c.T_pid, T_tp, T_name, T_handle, Time_start, Time_end, 0, 9999)
  1040. }
  1041. f := excelize.NewFile() // 设置单元格的值
  1042. // 这里设置表头
  1043. f.SetCellValue("Sheet1", "A1", "报警类型")
  1044. f.SetCellValue("Sheet1", "B1", "Sn")
  1045. f.SetCellValue("Sheet1", "C1", "设备名称")
  1046. f.SetCellValue("Sheet1", "D1", "传感器")
  1047. f.SetCellValue("Sheet1", "E1", "报警内容")
  1048. f.SetCellValue("Sheet1", "F1", "记录时间")
  1049. f.SetCellValue("Sheet1", "G1", "处理")
  1050. f.SetCellValue("Sheet1", "H1", "处理时间")
  1051. // 设置列宽
  1052. f.SetColWidth("Sheet1", "A", "A", 20)
  1053. f.SetColWidth("Sheet1", "B", "B", 25)
  1054. f.SetColWidth("Sheet1", "C", "C", 30)
  1055. f.SetColWidth("Sheet1", "D", "D", 30)
  1056. f.SetColWidth("Sheet1", "G", "E", 30)
  1057. f.SetColWidth("Sheet1", "H", "F", 15)
  1058. f.SetColWidth("Sheet1", "I", "G", 30)
  1059. f.SetColWidth("Sheet1", "J", "H", 15)
  1060. line := 1
  1061. // 循环写入数据
  1062. for _, v := range Device_data {
  1063. line++
  1064. f.SetCellValue("Sheet1", fmt.Sprintf("A%d", line), Warning.Read_WarningType_Get(v.T_tp))
  1065. f.SetCellValue("Sheet1", fmt.Sprintf("B%d", line), fmt.Sprintf("%s[%d]", v.T_sn, v.Id))
  1066. f.SetCellValue("Sheet1", fmt.Sprintf("C%d", line), v.T_D_name)
  1067. f.SetCellValue("Sheet1", fmt.Sprintf("D%d", line), v.T_DS_name)
  1068. f.SetCellValue("Sheet1", fmt.Sprintf("E%d", line), v.T_Remark)
  1069. f.SetCellValue("Sheet1", fmt.Sprintf("F%d", line), v.T_Ut)
  1070. f.SetCellValue("Sheet1", fmt.Sprintf("G%d", line), v.T_Text)
  1071. f.SetCellValue("Sheet1", fmt.Sprintf("H%d", line), v.CreateTime)
  1072. }
  1073. timeStr := time.Now().Format("20060102150405")
  1074. // 保存文件
  1075. if err := f.SaveAs("ofile/" + timeStr + ".xlsx"); err != nil {
  1076. fmt.Println(err)
  1077. }
  1078. url, is := NatsServer.Qiniu_UploadFile(lib.GetCurrentDirectory()+"/ofile/"+timeStr+".xlsx", "ofile/"+timeStr+".xlsx")
  1079. if !is {
  1080. c.Data["json"] = lib.JSONS{Code: 202, Msg: "oss!"}
  1081. c.ServeJSON()
  1082. return
  1083. }
  1084. //删除文件
  1085. err := os.Remove("ofile/" + timeStr + ".xlsx")
  1086. if err != nil {
  1087. fmt.Println(err)
  1088. }
  1089. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: url}
  1090. c.ServeJSON()
  1091. return
  1092. }
  1093. // 告警提示列表
  1094. func (c *DeviceController) DeviceWarningList_T_Tips() {
  1095. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Warning.Read_WarningType_All_T_Notice_mechanism()}
  1096. c.ServeJSON()
  1097. return
  1098. }
  1099. // 告警类型列表
  1100. func (c *DeviceController) WarningType_List_All() {
  1101. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Warning.Read_WarningType_All()}
  1102. c.ServeJSON()
  1103. return
  1104. }
  1105. // 告警类型列表 - 权限关联列表
  1106. func (c *DeviceController) WarningType_Power_List_All() {
  1107. power, err := Account.Read_Power_ById(c.Admin_r.T_power)
  1108. if err != nil {
  1109. c.Data["json"] = lib.JSONS{Code: 200, Msg: "获取菜单失败"}
  1110. c.ServeJSON()
  1111. return
  1112. }
  1113. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Warning.Read_WarningType_Power_All(power.T_warning)}
  1114. c.ServeJSON()
  1115. return
  1116. }
  1117. // 通过传感器类型获取报警列表
  1118. func (c *DeviceController) Read_Warning_List_By_DS_T_type() {
  1119. var r_jsons lib.R_JSONS
  1120. page, _ := c.GetInt("page")
  1121. if page < 1 {
  1122. page = 1
  1123. }
  1124. page_z, _ := c.GetInt("page_z")
  1125. if page_z < 1 {
  1126. page_z = conf.Page_size
  1127. }
  1128. T_type, _ := c.GetInt("T_type")
  1129. T_name := c.GetString("T_name")
  1130. r_jsons.Data, r_jsons.Num = Warning.Read_Warning_List_By_DS_T_type(c.T_pid, T_type, T_name, page, page_z)
  1131. r_jsons.Page = page
  1132. r_jsons.Page_size = int(math.Ceil(float64(r_jsons.Num) / float64(page_z)))
  1133. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1134. c.ServeJSON()
  1135. return
  1136. }
  1137. // 设备分类 ------------------------------------------
  1138. func (c *DeviceController) CompanyClass_List() {
  1139. type R_JSONS struct {
  1140. //必须的大写开头
  1141. Data []Company.CompanyClass_R
  1142. Num int64
  1143. Page int
  1144. Page_size int
  1145. }
  1146. var r_jsons R_JSONS
  1147. page, _ := c.GetInt("page")
  1148. if page < 1 {
  1149. page = 1
  1150. }
  1151. page_z, _ := c.GetInt("page_z")
  1152. if page_z < 1 {
  1153. page_z = conf.Page_size
  1154. }
  1155. T_name := c.GetString("T_name")
  1156. r_jsons.Data, r_jsons.Num = Company.Read_CompanyClass_List(c.T_pid, T_name, page, page_z)
  1157. r_jsons.Page = page
  1158. r_jsons.Page_size = int(math.Ceil(float64(r_jsons.Num) / float64(page_z)))
  1159. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1160. c.ServeJSON()
  1161. return
  1162. }
  1163. func (c *DeviceController) CompanyClass_All() {
  1164. type R_JSONS struct {
  1165. //必须的大写开头
  1166. Data []Company.CompanyClass_R
  1167. Num int64
  1168. Page int
  1169. Page_size int
  1170. }
  1171. var r_jsons R_JSONS
  1172. T_name := c.GetString("T_name")
  1173. r_jsons.Data = Company.Read_CompanyClass_All(c.T_pid, T_name)
  1174. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1175. c.ServeJSON()
  1176. return
  1177. }
  1178. func (c *DeviceController) CompanyClass_Get() {
  1179. id, _ := c.GetInt("T_id")
  1180. R_DeviceClass, err := Company.Read_CompanyClass_ById(id)
  1181. if err != nil {
  1182. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_id Err!"}
  1183. c.ServeJSON()
  1184. return
  1185. }
  1186. if R_DeviceClass.T_pid != c.T_pid {
  1187. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
  1188. c.ServeJSON()
  1189. return
  1190. }
  1191. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Company.CompanyClassToCompanyClass_R(R_DeviceClass)}
  1192. c.ServeJSON()
  1193. return
  1194. }
  1195. func (c *DeviceController) CompanyClass_Add() {
  1196. T_name := c.GetString("T_name")
  1197. t_c := Company.CompanyClass{
  1198. T_pid: c.T_pid,
  1199. T_name: T_name,
  1200. T_State: 1,
  1201. }
  1202. Id, err := Company.Add_CompanyClass(t_c)
  1203. if err != nil {
  1204. c.Data["json"] = lib.JSONS{Code: 202, Msg: "添加失败"}
  1205. c.ServeJSON()
  1206. return
  1207. }
  1208. System.Add_UserLogs_T(c.Admin_r.T_uuid, "设备管理", "分类添加", t_c)
  1209. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Id}
  1210. c.ServeJSON()
  1211. return
  1212. }
  1213. func (c *DeviceController) CompanyClass_Edit() {
  1214. T_name := c.GetString("T_name")
  1215. id, _ := c.GetInt("T_id")
  1216. R_DeviceClass, err := Company.Read_CompanyClass_ById(id)
  1217. if err != nil {
  1218. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_id Err!"}
  1219. c.ServeJSON()
  1220. return
  1221. }
  1222. if R_DeviceClass.T_pid != c.T_pid {
  1223. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
  1224. c.ServeJSON()
  1225. return
  1226. }
  1227. if len(T_name) > 0 {
  1228. R_DeviceClass.T_name = T_name
  1229. }
  1230. if is := Company.Update_CompanyClass(R_DeviceClass, "T_name"); !is {
  1231. c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败"}
  1232. c.ServeJSON()
  1233. return
  1234. }
  1235. System.Add_UserLogs_T(c.Admin_r.T_uuid, "设备管理", "分类修改", R_DeviceClass)
  1236. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1237. c.ServeJSON()
  1238. return
  1239. }
  1240. func (c *DeviceController) CompanyClass_Del() {
  1241. id, _ := c.GetInt("T_id")
  1242. R_DeviceClass, err := Company.Read_CompanyClass_ById(id)
  1243. if err != nil {
  1244. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_id Err!"}
  1245. c.ServeJSON()
  1246. return
  1247. }
  1248. if R_DeviceClass.T_pid != c.T_pid {
  1249. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
  1250. c.ServeJSON()
  1251. return
  1252. }
  1253. if is := Company.Delete_CompanyClass_ById(id); !is {
  1254. c.Data["json"] = lib.JSONS{Code: 202, Msg: "删除失败"}
  1255. c.ServeJSON()
  1256. return
  1257. }
  1258. // 将传感器T_Class绑定的分类id替换为空字符串
  1259. DeviceSensor_class_list := Device.Read_DeviceSensor_ALL_Class_Id(id)
  1260. for _, v := range DeviceSensor_class_list {
  1261. Device.DeviceSensor_Bind_T_Class_Del(v.T_sn, v.T_id, id)
  1262. }
  1263. System.Add_UserLogs(c.Admin_r.T_uuid, "设备管理", "分类删除", strconv.Itoa(id))
  1264. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1265. c.ServeJSON()
  1266. return
  1267. }
  1268. // 设备分类绑定
  1269. func (c *DeviceController) DeviceClassBind_List() {
  1270. type R_JSONS struct {
  1271. //必须的大写开头
  1272. DeviceSensor_lite []Device.DeviceSensor_
  1273. Num int
  1274. Page int
  1275. Page_size int
  1276. Pages []lib.Page_T
  1277. }
  1278. var r_jsons R_JSONS
  1279. page, _ := c.GetInt("page")
  1280. if page < 1 {
  1281. page = 1
  1282. }
  1283. page_z, _ := c.GetInt("page_z")
  1284. if page_z < 1 {
  1285. page_z = conf.Page_size
  1286. }
  1287. T_name := c.GetString("T_name")
  1288. T_sn := c.GetString("T_sn")
  1289. T_class_id, _ := c.GetInt("T_class_id")
  1290. T_type, _ := c.GetInt("T_type")
  1291. R_DeviceClass, err := Company.Read_CompanyClass_ById(T_class_id)
  1292. if err != nil {
  1293. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_class_id Err!"}
  1294. c.ServeJSON()
  1295. return
  1296. }
  1297. if R_DeviceClass.T_pid != c.T_pid {
  1298. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
  1299. c.ServeJSON()
  1300. return
  1301. }
  1302. var cnt int64
  1303. Device_lite, cnt := Device.Read_DeviceSensor_List_T_Class(c.T_pid, T_class_id, T_sn, T_name, T_type, page, page_z)
  1304. r_jsons.DeviceSensor_lite = Device_lite
  1305. page_size := math.Ceil(float64(cnt) / float64(page_z))
  1306. r_jsons.Page = page
  1307. r_jsons.Page_size = int(page_size)
  1308. r_jsons.Pages = lib.Func_page(int64(page), int64(page_size))
  1309. r_jsons.Num = int(cnt)
  1310. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1311. c.ServeJSON()
  1312. return
  1313. }
  1314. func (c *DeviceController) ClassBind_Add() {
  1315. T_class_id, _ := c.GetInt("T_class_id")
  1316. T_sn := c.GetString("T_sn")
  1317. T_id, _ := c.GetInt("T_id")
  1318. if T_class_id == 0 || len(T_sn) == 0 {
  1319. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_sn T_id T_class_id Err!"}
  1320. c.ServeJSON()
  1321. return
  1322. }
  1323. if _, err := Device.Read_Device_ByT_sn(T_sn); err != nil {
  1324. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_id Err!"}
  1325. c.ServeJSON()
  1326. return
  1327. }
  1328. R_DeviceClass, err := Company.Read_CompanyClass_ById(T_class_id)
  1329. if err != nil {
  1330. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_class_id Err!"}
  1331. c.ServeJSON()
  1332. return
  1333. }
  1334. if R_DeviceClass.T_pid != c.T_pid {
  1335. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
  1336. c.ServeJSON()
  1337. return
  1338. }
  1339. DeviceSensor_class_list := Device.Read_DeviceSensor_ALL_T_sn_T_id_T_Class(T_sn, T_id, T_class_id)
  1340. if len(DeviceSensor_class_list) > 0 {
  1341. c.Data["json"] = lib.JSONS{Code: 202, Msg: "重复绑定!"}
  1342. c.ServeJSON()
  1343. return
  1344. }
  1345. if err = Device.DeviceSensor_Bind_T_Class_Add(T_sn, T_id, T_class_id); err != nil {
  1346. c.Data["json"] = lib.JSONS{Code: 200, Msg: "绑定失败"}
  1347. c.ServeJSON()
  1348. return
  1349. }
  1350. System.Add_UserLogs(c.Admin_r.T_uuid, "设备管理", "分类绑定操作", strconv.Itoa(T_class_id)+"+>"+T_sn+"-"+strconv.Itoa(T_id))
  1351. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1352. c.ServeJSON()
  1353. return
  1354. }
  1355. func (c *DeviceController) ClassBind_Del() {
  1356. T_class_id, _ := c.GetInt("T_class_id")
  1357. T_sn := c.GetString("T_sn")
  1358. T_id, _ := c.GetInt("T_id")
  1359. if T_class_id == 0 || len(T_sn) == 0 {
  1360. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_sn T_id T_class_id Err!"}
  1361. c.ServeJSON()
  1362. return
  1363. }
  1364. if _, err := Device.Read_Device_ByT_sn(T_sn); err != nil {
  1365. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_id Err!"}
  1366. c.ServeJSON()
  1367. return
  1368. }
  1369. R_DeviceClass, err := Company.Read_CompanyClass_ById(T_class_id)
  1370. if err != nil {
  1371. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_class_id Err!"}
  1372. c.ServeJSON()
  1373. return
  1374. }
  1375. if R_DeviceClass.T_pid != c.T_pid {
  1376. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
  1377. c.ServeJSON()
  1378. return
  1379. }
  1380. DeviceSensor_class_list := Device.Read_DeviceSensor_ALL_T_sn_T_id_T_Class(T_sn, T_id, T_class_id)
  1381. if len(DeviceSensor_class_list) == 0 {
  1382. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1383. c.ServeJSON()
  1384. return
  1385. }
  1386. if err = Device.DeviceSensor_Bind_T_Class_Del(T_sn, T_id, T_class_id); err != nil {
  1387. c.Data["json"] = lib.JSONS{Code: 200, Msg: "删除失败"}
  1388. c.ServeJSON()
  1389. return
  1390. }
  1391. System.Add_UserLogs(c.Admin_r.T_uuid, "设备管理", "分类删除绑定操作", strconv.Itoa(T_class_id)+"->"+T_sn+"-"+strconv.Itoa(T_id))
  1392. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1393. c.ServeJSON()
  1394. return
  1395. }
  1396. // 报警策略 ------------------------------------------
  1397. func (c *DeviceController) CompanyNotice_List() {
  1398. type R_JSONS struct {
  1399. //必须的大写开头
  1400. Data []Company.CompanyNotice_R
  1401. Num int64
  1402. Page int
  1403. Page_size int
  1404. }
  1405. var r_jsons R_JSONS
  1406. page, _ := c.GetInt("page")
  1407. if page < 1 {
  1408. page = 1
  1409. }
  1410. page_z, _ := c.GetInt("page_z")
  1411. if page_z < 1 {
  1412. page_z = conf.Page_size
  1413. }
  1414. T_name := c.GetString("T_name")
  1415. r_jsons.Data, r_jsons.Num = Company.Read_CompanyNotice_List(c.T_pid, T_name, page, page_z)
  1416. r_jsons.Page = page
  1417. r_jsons.Page_size = int(math.Ceil(float64(r_jsons.Num) / float64(page_z)))
  1418. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1419. c.ServeJSON()
  1420. return
  1421. }
  1422. func (c *DeviceController) CompanyNotice_All() {
  1423. type R_JSONS struct {
  1424. //必须的大写开头
  1425. Data []Company.CompanyNotice_R
  1426. Num int64
  1427. Page int
  1428. Page_size int
  1429. }
  1430. var r_jsons R_JSONS
  1431. T_name := c.GetString("T_name")
  1432. r_jsons.Data = Company.Read_CompanyNotice_All(c.T_pid, T_name)
  1433. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1434. c.ServeJSON()
  1435. return
  1436. }
  1437. func (c *DeviceController) CompanyNotice_Get() {
  1438. id, _ := c.GetInt("T_id")
  1439. R_DeviceNotice, err := Company.Read_CompanyNotice_ById(id)
  1440. if err != nil {
  1441. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_id Err!"}
  1442. c.ServeJSON()
  1443. return
  1444. }
  1445. if R_DeviceNotice.T_pid != c.T_pid {
  1446. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
  1447. c.ServeJSON()
  1448. return
  1449. }
  1450. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Company.CompanyNoticeToCompanyNotice_R(R_DeviceNotice)}
  1451. c.ServeJSON()
  1452. return
  1453. }
  1454. func (c *DeviceController) CompanyNotice_Add() {
  1455. T_name := c.GetString("T_name")
  1456. t_c := Company.CompanyNotice{
  1457. T_pid: c.T_pid,
  1458. T_name: T_name,
  1459. T_Notice_mechanism: Warning.Read_WarningType_All_T_Notice_mechanism(),
  1460. T_State: 1,
  1461. }
  1462. Id, err := Company.Add_CompanyNotice(t_c)
  1463. if err != nil {
  1464. c.Data["json"] = lib.JSONS{Code: 202, Msg: "添加失败"}
  1465. c.ServeJSON()
  1466. return
  1467. }
  1468. System.Add_UserLogs_T(c.Admin_r.T_uuid, "设备管理", "报警策略添加", t_c)
  1469. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Id}
  1470. c.ServeJSON()
  1471. return
  1472. }
  1473. func (c *DeviceController) CompanyNotice_Edit() {
  1474. id, _ := c.GetInt("T_id")
  1475. T_name := c.GetString("T_name")
  1476. T_Notice_wx := c.GetString("T_Notice_wx")
  1477. T_Notice_wx2 := c.GetString("T_Notice_wx2")
  1478. T_Notice_phone := c.GetString("T_Notice_phone")
  1479. T_Notice_message := c.GetString("T_Notice_message")
  1480. T_Notice_mailbox := c.GetString("T_Notice_mailbox")
  1481. T_Notice_mechanism := c.GetString("T_Notice_mechanism")
  1482. R_DeviceNotice, err := Company.Read_CompanyNotice_ById(id)
  1483. if err != nil {
  1484. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_id Err!"}
  1485. c.ServeJSON()
  1486. return
  1487. }
  1488. if R_DeviceNotice.T_pid != c.T_pid {
  1489. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
  1490. c.ServeJSON()
  1491. return
  1492. }
  1493. R_DeviceNotice.Id = id
  1494. if len(T_name) > 0 {
  1495. R_DeviceNotice.T_name = T_name
  1496. }
  1497. if len(T_Notice_wx) > 0 {
  1498. if T_Notice_wx == "-" {
  1499. T_Notice_wx = ""
  1500. }
  1501. R_DeviceNotice.T_Notice_wx = T_Notice_wx
  1502. }
  1503. if len(T_Notice_wx2) > 0 {
  1504. if T_Notice_wx2 == "-" {
  1505. T_Notice_wx2 = ""
  1506. }
  1507. R_DeviceNotice.T_Notice_wx2 = T_Notice_wx2
  1508. }
  1509. if len(T_Notice_phone) > 0 {
  1510. if T_Notice_phone == "-" {
  1511. T_Notice_phone = ""
  1512. }
  1513. R_DeviceNotice.T_Notice_phone = T_Notice_phone
  1514. }
  1515. if len(T_Notice_message) > 0 {
  1516. R_DeviceNotice.T_Notice_message = T_Notice_message
  1517. }
  1518. if len(T_Notice_mailbox) > 0 {
  1519. if T_Notice_mailbox == "-" {
  1520. T_Notice_mailbox = ""
  1521. }
  1522. R_DeviceNotice.T_Notice_mailbox = T_Notice_mailbox
  1523. }
  1524. if len(T_Notice_mechanism) > 0 {
  1525. if T_Notice_mechanism == "-" {
  1526. T_Notice_mechanism = ""
  1527. }
  1528. R_DeviceNotice.T_Notice_mechanism = T_Notice_mechanism
  1529. }
  1530. if err = Company.Update_CompanyNotice(R_DeviceNotice, "T_name", "T_Notice_wx", "T_Notice_wx2", "T_Notice_phone", "T_Notice_message", "T_Notice_mailbox", "T_Notice_mechanism"); err != nil {
  1531. c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败"}
  1532. c.ServeJSON()
  1533. return
  1534. }
  1535. System.Add_UserLogs_T(c.Admin_r.T_uuid, "设备管理", "报警策略修改", R_DeviceNotice)
  1536. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1537. c.ServeJSON()
  1538. return
  1539. }
  1540. func (c *DeviceController) CompanyNotice_Reset_Mechanism() {
  1541. id, _ := c.GetInt("T_id")
  1542. R_DeviceNotice, err := Company.Read_CompanyNotice_ById(id)
  1543. if err != nil {
  1544. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_id Err!"}
  1545. c.ServeJSON()
  1546. return
  1547. }
  1548. if R_DeviceNotice.T_pid != c.T_pid {
  1549. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
  1550. c.ServeJSON()
  1551. return
  1552. }
  1553. R_DeviceNotice.T_Notice_mechanism = Warning.Read_WarningType_All_T_Notice_mechanism()
  1554. if err = Company.Update_CompanyNotice(R_DeviceNotice, "T_Notice_mechanism"); err != nil {
  1555. c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败"}
  1556. c.ServeJSON()
  1557. return
  1558. }
  1559. System.Add_UserLogs_T(c.Admin_r.T_uuid, "设备管理", "报警策略", R_DeviceNotice)
  1560. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1561. c.ServeJSON()
  1562. return
  1563. }
  1564. func (c *DeviceController) CompanyNotice_Del() {
  1565. id, _ := c.GetInt("T_id")
  1566. R_DeviceNotice, err := Company.Read_CompanyNotice_ById(id)
  1567. if err != nil {
  1568. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_id Err!"}
  1569. c.ServeJSON()
  1570. return
  1571. }
  1572. if R_DeviceNotice.T_pid != c.T_pid {
  1573. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
  1574. c.ServeJSON()
  1575. return
  1576. }
  1577. if is := Company.Delete_CompanyNotice_ById(id); !is {
  1578. c.Data["json"] = lib.JSONS{Code: 202, Msg: "删除失败"}
  1579. c.ServeJSON()
  1580. return
  1581. }
  1582. DeviceSensor_class_list := Device.Read_DeviceSensor_ALL_Notice_Id(id)
  1583. for _, v := range DeviceSensor_class_list {
  1584. Device.DeviceSensor_Bind_T_Notice_Del(v.T_sn, v.T_id, id)
  1585. }
  1586. System.Add_UserLogs(c.Admin_r.T_uuid, "设备管理", "报警策略删除", strconv.Itoa(id))
  1587. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1588. c.ServeJSON()
  1589. return
  1590. }
  1591. // 设备通知绑定
  1592. func (c *DeviceController) DeviceNoticeBind_List() {
  1593. type R_JSONS struct {
  1594. //必须的大写开头
  1595. DeviceSensor_lite []Device.DeviceSensor_
  1596. Num int
  1597. Page int
  1598. Page_size int
  1599. Pages []lib.Page_T
  1600. }
  1601. var r_jsons R_JSONS
  1602. page, _ := c.GetInt("page")
  1603. if page < 1 {
  1604. page = 1
  1605. }
  1606. page_z, _ := c.GetInt("page_z")
  1607. if page_z < 1 {
  1608. page_z = conf.Page_size
  1609. }
  1610. T_name := c.GetString("T_name")
  1611. T_sn := c.GetString("T_sn")
  1612. T_notice_id, _ := c.GetInt("T_notice_id")
  1613. T_type, _ := c.GetInt("T_type")
  1614. R_DeviceNotice, err := Company.Read_CompanyNotice_ById(T_notice_id)
  1615. if err != nil {
  1616. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_class_id Err!"}
  1617. c.ServeJSON()
  1618. return
  1619. }
  1620. if R_DeviceNotice.T_pid != c.T_pid {
  1621. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
  1622. c.ServeJSON()
  1623. return
  1624. }
  1625. var cnt int64
  1626. Device_lite, cnt := Device.Read_DeviceSensor_List_T_Notice(c.T_pid, T_notice_id, page, page_z, T_sn, T_name, T_type)
  1627. r_jsons.DeviceSensor_lite = Device_lite
  1628. page_size := math.Ceil(float64(cnt) / float64(page_z))
  1629. r_jsons.Page = page
  1630. r_jsons.Page_size = int(page_size)
  1631. r_jsons.Pages = lib.Func_page(int64(page), int64(page_size))
  1632. r_jsons.Num = int(cnt)
  1633. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1634. c.ServeJSON()
  1635. return
  1636. }
  1637. func (c *DeviceController) NoticeBind_Add() {
  1638. T_notice_id, _ := c.GetInt("T_notice_id")
  1639. T_sn := c.GetString("T_sn")
  1640. T_id, _ := c.GetInt("T_id")
  1641. if T_notice_id == 0 || len(T_sn) == 0 {
  1642. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_sn T_id T_class_id Err!"}
  1643. c.ServeJSON()
  1644. return
  1645. }
  1646. if _, err := Device.Read_Device_ByT_sn(T_sn); err != nil {
  1647. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_id Err!"}
  1648. c.ServeJSON()
  1649. return
  1650. }
  1651. R_CompanyNotice, err := Company.Read_CompanyNotice_ById(T_notice_id)
  1652. if err != nil {
  1653. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_class_id Err!"}
  1654. c.ServeJSON()
  1655. return
  1656. }
  1657. if R_CompanyNotice.T_pid != c.T_pid {
  1658. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
  1659. c.ServeJSON()
  1660. return
  1661. }
  1662. DeviceSensor_Notice_list := Device.Read_DeviceSensor_ALL_T_sn_T_id_T_Notice(T_sn, T_id, T_notice_id)
  1663. if len(DeviceSensor_Notice_list) > 0 {
  1664. c.Data["json"] = lib.JSONS{Code: 202, Msg: "重复绑定!"}
  1665. c.ServeJSON()
  1666. return
  1667. }
  1668. if err = Company.Add_T_Notice_bind(T_sn, T_id, T_notice_id); err != nil {
  1669. c.Data["json"] = lib.JSONS{Code: 200, Msg: "通知绑定失败"}
  1670. c.ServeJSON()
  1671. return
  1672. }
  1673. if err = Device.DeviceSensor_Bind_T_Notice_Add(T_sn, T_id, T_notice_id); err != nil {
  1674. c.Data["json"] = lib.JSONS{Code: 200, Msg: "通知绑定失败"}
  1675. c.ServeJSON()
  1676. return
  1677. }
  1678. System.Add_UserLogs(c.Admin_r.T_uuid, "设备管理", "报警策略绑定添加", strconv.Itoa(T_notice_id)+"+>"+T_sn+"-"+strconv.Itoa(T_id))
  1679. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1680. c.ServeJSON()
  1681. return
  1682. }
  1683. func (c *DeviceController) NoticeBind_Del() {
  1684. T_notice_id, _ := c.GetInt("T_notice_id")
  1685. T_sn := c.GetString("T_sn")
  1686. T_id, _ := c.GetInt("T_id")
  1687. if T_notice_id == 0 || len(T_sn) == 0 {
  1688. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_sn T_id T_class_id Err!"}
  1689. c.ServeJSON()
  1690. return
  1691. }
  1692. if _, err := Device.Read_Device_ByT_sn(T_sn); err != nil {
  1693. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_id Err!"}
  1694. c.ServeJSON()
  1695. return
  1696. }
  1697. R_DeviceClass, err := Company.Read_CompanyNotice_ById(T_notice_id)
  1698. if err != nil {
  1699. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_class_id Err!"}
  1700. c.ServeJSON()
  1701. return
  1702. }
  1703. if R_DeviceClass.T_pid != c.T_pid {
  1704. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
  1705. c.ServeJSON()
  1706. return
  1707. }
  1708. DeviceSensor_class_list := Device.Read_DeviceSensor_ALL_T_sn_T_id_T_Notice(T_sn, T_id, T_notice_id)
  1709. if len(DeviceSensor_class_list) == 0 {
  1710. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1711. c.ServeJSON()
  1712. return
  1713. }
  1714. if err = Company.Delete_T_Notice_bind(T_sn, T_id, T_notice_id); err != nil {
  1715. c.Data["json"] = lib.JSONS{Code: 200, Msg: "通知删除绑定失败"}
  1716. c.ServeJSON()
  1717. return
  1718. }
  1719. if err = Device.DeviceSensor_Bind_T_Notice_Del(T_sn, T_id, T_notice_id); err != nil {
  1720. c.Data["json"] = lib.JSONS{Code: 200, Msg: "通知删除绑定失败"}
  1721. c.ServeJSON()
  1722. return
  1723. }
  1724. System.Add_UserLogs(c.Admin_r.T_uuid, "设备管理", "通知删除绑定删除", strconv.Itoa(T_notice_id)+"->"+T_sn+"-"+strconv.Itoa(T_id))
  1725. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1726. c.ServeJSON()
  1727. return
  1728. }
  1729. // 传感器类型
  1730. func (c *DeviceController) DeviceSensorType_List_All() {
  1731. type R_JSONS struct {
  1732. //必须的大写开头
  1733. Data []Device.DeviceSensorType
  1734. Num int64
  1735. Page int
  1736. Page_size int
  1737. }
  1738. var r_jsons R_JSONS
  1739. r_jsons.Data = Device.Read_DeviceSensorType_List_All()
  1740. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1741. c.ServeJSON()
  1742. return
  1743. }
  1744. // 传感器类型 - 小程序
  1745. func (c *DeviceController) DeviceSensorType_List() {
  1746. var r_jsons lib.R_JSONS
  1747. list, err := Device.Read_DeviceSensor_T_type(c.T_pid)
  1748. if err != nil {
  1749. c.Data["json"] = lib.JSONS{Code: 202, Msg: "查询失败!"}
  1750. c.ServeJSON()
  1751. return
  1752. }
  1753. if len(list) == 0 {
  1754. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1755. c.ServeJSON()
  1756. return
  1757. }
  1758. var ids []int
  1759. for _, v := range list {
  1760. id, _ := strconv.Atoi(v.(string))
  1761. ids = append(ids, id)
  1762. }
  1763. r_jsons.Data = Device.Read_DeviceSensorType_List_By_Ids(ids)
  1764. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1765. c.ServeJSON()
  1766. return
  1767. }
  1768. // 设备统计 - 小程序
  1769. func (c *DeviceController) Device_Applet_Stat() {
  1770. type Online struct {
  1771. T_type int
  1772. Count int64
  1773. Online int64 // 监控
  1774. NoNetwork int64 // 无网络
  1775. NotEnabled int64 // 未启用
  1776. }
  1777. type R_JSONS struct {
  1778. //必须的大写开头
  1779. Data Online
  1780. }
  1781. T_type, T_type_err := c.GetInt("T_type")
  1782. if T_type_err != nil || T_type == 0 {
  1783. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_type Err!"}
  1784. c.ServeJSON()
  1785. return
  1786. }
  1787. snList, err := Device.Read_DeviceSensor_T_sn_ByT_type(c.T_pid, T_type)
  1788. if err != nil {
  1789. c.Data["json"] = lib.JSONS{Code: 202, Msg: "查询失败!"}
  1790. c.ServeJSON()
  1791. return
  1792. }
  1793. var r_jsons R_JSONS
  1794. r_jsons.Data.T_type = T_type
  1795. // 0 未启用 1 在线 2 离线
  1796. r_jsons.Data.Count = Device.Read_Device_Count_ByT_online(c.T_pid, snList, "")
  1797. r_jsons.Data.Online = Device.Read_Device_Count_ByT_online(c.T_pid, snList, "1")
  1798. r_jsons.Data.NoNetwork = Device.Read_Device_Count_ByT_online(c.T_pid, snList, "2")
  1799. r_jsons.Data.NotEnabled = Device.Read_Device_Count_ByT_online(c.T_pid, snList, "0")
  1800. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1801. c.ServeJSON()
  1802. return
  1803. }
  1804. // 传感器列表 - 小程序 View==1
  1805. func (c *DeviceController) DeviceSensor_Applet_List_View1() {
  1806. var r_jsons lib.R_JSONS
  1807. page, _ := c.GetInt("page")
  1808. if page < 1 {
  1809. page = 1
  1810. }
  1811. page_z, _ := c.GetInt("page_z")
  1812. if page_z < 1 {
  1813. page_z = conf.Page_size
  1814. }
  1815. T_name := c.GetString("T_name")
  1816. //T_online := c.GetString("T_online")
  1817. T_type, T_type_err := c.GetInt("T_type")
  1818. if T_type_err != nil {
  1819. T_type = -1
  1820. }
  1821. r_jsons.Data, r_jsons.Num = Device.Read_DeviceSensor_List_For_Applet(c.T_pid, T_name, "3", 1, T_type, page, page_z)
  1822. r_jsons.Page = page
  1823. r_jsons.Page_size = int(math.Ceil(float64(r_jsons.Num) / float64(page_z)))
  1824. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1825. c.ServeJSON()
  1826. return
  1827. }
  1828. // 传感器列表 - 小程序 View==2
  1829. func (c *DeviceController) DeviceSensor_Applet_List_View2() {
  1830. var r_jsons lib.R_JSONS
  1831. page, _ := c.GetInt("page")
  1832. if page < 1 {
  1833. page = 1
  1834. }
  1835. page_z, _ := c.GetInt("page_z")
  1836. if page_z < 1 {
  1837. page_z = conf.Page_size
  1838. }
  1839. T_name := c.GetString("T_name")
  1840. T_online := c.GetString("T_online")
  1841. T_type, T_type_err := c.GetInt("T_type")
  1842. if T_type_err != nil {
  1843. T_type = -1
  1844. }
  1845. dsList, _ := Device.Read_DeviceSensor_List_For_Applet(c.T_pid, T_name, T_online, 1, T_type, page, 9999)
  1846. var deviceMap = make(map[string][]Device.DeviceSensor_Applet)
  1847. var num int64
  1848. for _, ds := range dsList {
  1849. _, ok := deviceMap[ds.T_sn]
  1850. if !ok {
  1851. num += 1
  1852. var list []Device.DeviceSensor_Applet
  1853. list = append(list, ds)
  1854. deviceMap[ds.T_sn] = list
  1855. } else {
  1856. deviceMap[ds.T_sn] = append(deviceMap[ds.T_sn], ds)
  1857. }
  1858. }
  1859. type DeviceList struct {
  1860. T_sn string
  1861. DeviceSensorList []Device.DeviceSensor_Applet
  1862. }
  1863. var deviceList []DeviceList
  1864. for k, v := range deviceMap {
  1865. device := DeviceList{
  1866. T_sn: k,
  1867. DeviceSensorList: v,
  1868. }
  1869. deviceList = append(deviceList, device)
  1870. }
  1871. var offset int
  1872. if page <= 1 {
  1873. offset = 0
  1874. } else {
  1875. offset = (page - 1) * page_z
  1876. }
  1877. offset_z := offset + page_z
  1878. if num < int64(offset_z) {
  1879. offset_z = int(num)
  1880. }
  1881. if offset > offset_z {
  1882. offset = offset_z
  1883. }
  1884. r_jsons.Data = deviceList[offset:offset_z]
  1885. r_jsons.Num = num
  1886. r_jsons.Page = page
  1887. r_jsons.Page_size = int(math.Ceil(float64(r_jsons.Num) / float64(page_z)))
  1888. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1889. c.ServeJSON()
  1890. return
  1891. }