triggerService.go 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. package trigger
  2. import (
  3. "fmt"
  4. "strconv"
  5. "time"
  6. "dashoo.cn/utils"
  7. . "dashoo.cn/utils/db"
  8. "github.com/go-xorm/xorm"
  9. )
  10. type TriggerService struct {
  11. ServiceBase
  12. }
  13. //出库管理子表
  14. type MaterialCKDetail struct {
  15. Id int `xorm:"not null pk autoincr INT(11)"`
  16. CKNo string `xorm:"VARCHAR(50)"` //出库单号
  17. ProjectId int `xorm:"INT(11)"` //项目Id
  18. MaterialId int `xorm:"INT(11)"` //物料Id
  19. Unit string `xorm:"VARCHAR(50)"` //单位Name
  20. BatchNo string `xorm:"VARCHAR(50)"` //批次号
  21. CKCount float32 `xorm:"FLOAT"` //数量
  22. CKWeight float32 `xorm:"FLOAT"` //重量
  23. UnitPrice float32 `xorm:"FLOAT"` //单价
  24. TotalPrice float32 `xorm:"FLOAT"` //总价
  25. Remark string `xorm:"TEXT"` //备注
  26. CreateOn time.Time `xorm:"DATETIME created"` //创建时间
  27. CreateUserId int `xorm:"INT(11)"`
  28. CreateBy string `xorm:"VARCHAR(50)"` //创建人
  29. ModifiedOn time.Time `xorm:"DATETIME updated"`
  30. ModifiedUserId int `xorm:"INT(11)"`
  31. ModifiedBy string `xorm:"VARCHAR(50)"`
  32. }
  33. func GetTriggerService(xormEngine *xorm.Engine) *TriggerService {
  34. s := new(TriggerService)
  35. s.DBE = xormEngine
  36. return s
  37. }
  38. //时间查询
  39. func (s *TriggerService) GetEntitiesWithSearch(searchstring string) []Triggers {
  40. sql := `select a.Id,a.AccCode,a.Feedback,a.AID,a.FeedbackTime,d.SurplusCount, a.ValidityDate,a.Id,a.Notification,a.TimeNotification,a.RemindTime,a.KCMin,a.KCMax, b.SPara3,c.KCCount,a.ContentMode,a.Switchalarm from Triggers a
  41. inner join Actions b on a.AId=b.Id
  42. inner join accountinfo d on d.Id=2925
  43. inner join materialbatchkc c on a.MaterialbatchkcId=c.Id ` + searchstring
  44. fmt.Println(sql)
  45. list := make([]Triggers, 0)
  46. s.DBE.Sql(sql).Find(&list)
  47. return list
  48. }
  49. //类型更新
  50. func (s *TriggerService) Update_oilwell_type(scalar, vector, id string) error {
  51. var err error
  52. sql := "UPDATE channels_dg_oilwell SET Scalar='" + scalar + "', Vector ='" + vector + "' WHERE id= " + id
  53. fmt.Println("-----sql---", sql)
  54. _, err = s.DBE.Query(sql)
  55. LogError(err)
  56. return err
  57. }
  58. //油水井id
  59. func (s *TriggerService) Getysj_ID(searchstring string) int64 {
  60. var err error
  61. var total int64
  62. sql := `select count(*) from channels_dg_oilwell where id = ` + searchstring
  63. resultsSlice, err := s.DBE.Query(sql)
  64. LogError(err)
  65. if len(resultsSlice) > 0 {
  66. results := resultsSlice[0]
  67. for _, value := range results {
  68. total, err = strconv.ParseInt(string(value), 10, 64)
  69. LogError(err)
  70. break
  71. }
  72. }
  73. return total
  74. }
  75. //油水井分解类型
  76. func (s *TriggerService) Getoilwell_type() []Channels_dg_oilwell {
  77. sql := `select * from channels_dg_oilwell `
  78. fmt.Println(sql)
  79. list := make([]Channels_dg_oilwell, 0)
  80. s.DBE.Sql(sql).Find(&list)
  81. return list
  82. }
  83. //查询跟新开锁请求
  84. func (s *TriggerService) UpdateEntitybyId(id int, isSend float64, CreateOn int64) (err error) {
  85. // isSends := strconv.FormatFloat(isSend, 'E', -1, 64)
  86. difference := time.Now().Unix() - CreateOn
  87. SendErrorMsg := strconv.FormatInt(difference, 10)
  88. str_time := time.Now().Format("2006-01-02 15:04:05")
  89. _, err = s.DBE.Exec(`update record_History set IsSend= 2,SendErrorMsg = ` + SendErrorMsg + `, ModifiedOn = "` + str_time + `" where
  90. id=` + strconv.Itoa(id) + ``)
  91. LogError(err)
  92. if err != nil {
  93. return err
  94. }
  95. return
  96. }
  97. //查询10秒内开锁请求
  98. func (s *TriggerService) GetHistoryByChannelCode(searchstring string, delay int) []Record_History {
  99. //延迟
  100. str_time := time.Unix(time.Now().Unix()-int64(delay), 0).Format("2006-01-02 15:04:05")
  101. sql := `select * from record_history WHERE ChannelCode = ` + searchstring + ` and CreateOn > '` + str_time + `'`
  102. fmt.Println(sql)
  103. list := make([]Record_History, 0)
  104. s.DBE.Sql(sql).Find(&list)
  105. return list
  106. }
  107. //名称查询 存储到redis
  108. func (s *TriggerService) GetEntitiesTRredis(searchstring string) []Channels {
  109. sql := `select Title from channels where Serial = ` + searchstring
  110. fmt.Println(sql)
  111. list := make([]Channels, 0)
  112. s.DBE.Sql(sql).Find(&list)
  113. return list
  114. }
  115. //经纬度查询
  116. func (s *TriggerService) GetEntitiesWithSearchlatlug(searchstring string) []Channelslat {
  117. sql := `select Id,Unit,UnitSign from channels where Serial = ` + searchstring
  118. fmt.Println(sql)
  119. list := make([]Channelslat, 0)
  120. s.DBE.Sql(sql).Find(&list)
  121. return list
  122. }
  123. //库存数量计算
  124. func (s *TriggerService) Getmaterialckdetail(searchstring string) []MaterialCKDetail {
  125. sql := `select CKCount from materialckdetail where ` + searchstring
  126. fmt.Println(sql)
  127. list := make([]MaterialCKDetail, 0)
  128. s.DBE.Sql(sql).Find(&list)
  129. return list
  130. }
  131. //设备有效期
  132. func (s *TriggerService) GetEntitiesWithSearchdevice(searchstring string) []Triggers {
  133. sql := `select a.Id, a.AccCode,a.Category,a.AId,d.SurplusCount,a.RemindTime,a.ValidityDate,a.ProductDate, a.FeedbackTime,b.SPara3,a.Switchalarm from Triggers a
  134. inner join accountinfo d on d.Id=2925
  135. inner join Actions b on a.AId=b.Id where a.Category = 3 ` + searchstring
  136. fmt.Println(sql)
  137. list := make([]Triggers, 0)
  138. s.DBE.Sql(sql).Find(&list)
  139. return list
  140. }
  141. //添加历史记录
  142. func (s *TriggerService) GetINSERTchannels_dg_oilwell(id, code, name string, welltype int64, orgCode string) error {
  143. sql := "insert into channels_dg_oilwell(Id,WellCode,Well_Name,WellType,OrgCode,CreateOn) values(" + id + ",'" + code + "','" + name + "','" + strconv.FormatInt(welltype, 10) + "','" + orgCode + "',NOW())"
  144. _, err := s.DBE.Exec(sql)
  145. return err
  146. }
  147. //添加历史记录
  148. func (s *TriggerService) GetINSERTHIStr(SendTo, ChannelName, Message, ChannelCode, ProjectSourse, ProjectAccount, ProjectAccountName, ActionType string, AlarmOn, IsSend, EventFiled, Value, Remark string) (id int64, err error) {
  149. sql := "insert into trigger_history(Id,CreateUserId,CreateBy,CreateOn,ChannelName,ChannelCode,ProjectSourse,ProjectAccount,ProjectAccountName,SendTo,Message,ActionType,IsRead,AlarmOn,IsSend,EventFiled,Value,Remark) values(Null,138,'seed平台',NOW(),'" + ChannelName + "','" + ChannelCode + "','" + ProjectSourse + "','" + ProjectAccount + "','" + ProjectAccountName + "','" + SendTo + "','" + Message + "','" + ActionType + "',0,'" + AlarmOn + "','" + IsSend + "','" + EventFiled + "','" + Value + "','" + Remark + "')"
  150. // sql := "insert into trigger_history(Id,SendTo,Message,ActionType,IsRead,AlarmOn,IsSend) values(Null,'" + SendTo + "','" + Message + "','" + ActionType + "',0,NOW(),'" + IsSend + "')"
  151. fmt.Println("----sql----", sql)
  152. lastid, err := s.DBE.Exec(sql)
  153. ids, _ := lastid.LastInsertId()
  154. return ids, err
  155. }
  156. //库存为0删除查询
  157. func (s *TriggerService) DeletetrforId(searchstring string) []Triggers {
  158. sql := `delete from Triggers where Id =` + searchstring
  159. fmt.Println(sql)
  160. list := make([]Triggers, 0)
  161. s.DBE.Sql(sql).Find(&list)
  162. return list
  163. }
  164. func (s *TriggerService) UpdateEntityBytbl(tablename string, id interface{}, entity interface{}, cols []string) (err error) {
  165. session := s.DBE.NewSession()
  166. defer session.Close()
  167. err = session.Begin()
  168. LogError(err)
  169. if err != nil {
  170. session.Rollback()
  171. return err
  172. }
  173. _, err = s.DBE.Table(tablename).Id(id).Cols(cols...).Update(entity) //执行更新
  174. LogError(err)
  175. if err != nil {
  176. session.Rollback()
  177. return err
  178. }
  179. err = session.Commit()
  180. if err != nil {
  181. return err
  182. }
  183. return
  184. }
  185. func (s *TriggerService) GetPswById(userid int) (userinfo UserInfo) {
  186. sql := `select a.UserName,a.UserPassword,a.PublicKey from Base_User a where a.Id=` + utils.ToStr(userid)
  187. s.DBE.Sql(sql).Get(&userinfo)
  188. return userinfo
  189. }
  190. //取报警记录中两小时内的最后一条数据的报警类型
  191. func (s *TriggerService) GetTriggerTypelastbytime(systime time.Time, minute, triggerid int) int {
  192. var triggertype Id_Int
  193. sql := `select TriggerType Id from Trigger_History a where
  194. a.CreateOn>DATE_ADD('%v', INTERVAL %v MINUTE)
  195. and a.TriggerId =%v
  196. order by a.CreateOn desc limit 1`
  197. sql = fmt.Sprintf(sql, utils.TimeFormat(systime, "2006-01-02 15:04:05"), minute, triggerid)
  198. s.DBE.Sql(sql).Get(&triggertype)
  199. return triggertype.Id
  200. }
  201. //取报警记录中最后一条数据的报警类型
  202. func (s *TriggerService) GetTriggerTypelast(triggerid string, createtime time.Time) int {
  203. var triggertype Id_Int
  204. sql := `select TriggerType Id from Trigger_History a where
  205. a.TriggerId =` + triggerid + ` and CreateOn>'` + createtime.Format("2006-01-02 15:04:05") + `'
  206. order by a.CreateOn desc limit 1`
  207. s.DBE.Sql(sql).Get(&triggertype)
  208. return triggertype.Id
  209. }