Device.go 57 KB

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